本文整理汇总了C#中Camera.UpdateEffect方法的典型用法代码示例。如果您正苦于以下问题:C# Camera.UpdateEffect方法的具体用法?C# Camera.UpdateEffect怎么用?C# Camera.UpdateEffect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Camera
的用法示例。
在下文中一共展示了Camera.UpdateEffect方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
camera.UpdateEffect(Effect);
Effect.World = World;
Thing.Draw(Effect);
return true;
}
示例2: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
base.draw(camera, drawingReason, shadowMap);
if (drawingReason != DrawingReason.Normal)
return true;
camera.UpdateEffect(_signTextEffect);
var world = World*Matrix.Translation(0, TextDistanceAboveGround - 2, 0);
_signTextEffect.DiffuseColor = Color.WhiteSmoke.ToVector4();
foreach (var vc in _vclasses)
{
var pos = Vector3.TransformCoordinate(vc.Position, world);
var viewDirection = Vector3.Normalize(pos - camera.Position);
if (Vector3.DistanceSquared(pos, camera.Position) > 200000 || Vector3.Dot(viewDirection, camera.Front) < 0)
continue;
var text = vc.VClass.Name;
_signTextEffect.World = createConstrainedBillboard(pos - viewDirection*0.2f, viewDirection, Vector3.Down);
_spriteBatch.Begin(SpriteSortMode.Deferred, null, null, Effect.GraphicsDevice.DepthStencilStates.DepthRead, null, _signTextEffect.Effect);
_spriteBatch.DrawString(_spriteFont, text, Vector2.Zero, Color.Black, 0, _spriteFont.MeasureString(text)/2, TextSize, 0, 0);
_spriteBatch.End();
}
Effect.GraphicsDevice.SetDepthStencilState(Effect.GraphicsDevice.DepthStencilStates.Default);
Effect.GraphicsDevice.SetBlendState(Effect.GraphicsDevice.BlendStates.Opaque);
return true;
}
示例3: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
if (_vertexBuffer == null)
return false;
camera.UpdateEffect(Effect);
Effect.World = _world;
Effect.Texture = _texture;
Effect.GraphicsDevice.SetVertexBuffer(_vertexBuffer);
Effect.GraphicsDevice.SetVertexInputLayout(_vertexInputLayout);
Effect.Parameters["WindTime"].SetValue(_time);
Effect.Parameters["BillboardWidth"].SetValue(_billboardWidth);
Effect.Parameters["BillboardHeight"].SetValue(_billboardHeight);
//pass one
Effect.Parameters["AlphaTestDirection"].SetValue(1f);
Effect.Effect.CurrentTechnique.Passes[0].Apply();
Effect.GraphicsDevice.Draw(PrimitiveType.TriangleList, _vertexBuffer.ElementCount);
if (drawingReason == DrawingReason.Normal)
{
//pass two
Effect.GraphicsDevice.SetDepthStencilState(Effect.GraphicsDevice.DepthStencilStates.DepthRead);
Effect.GraphicsDevice.SetBlendState(Effect.GraphicsDevice.BlendStates.NonPremultiplied);
Effect.Parameters["AlphaTestDirection"].SetValue(-1f);
Effect.Effect.CurrentTechnique.Passes[0].Apply();
Effect.GraphicsDevice.Draw(PrimitiveType.TriangleList, _vertexBuffer.ElementCount);
Effect.GraphicsDevice.SetDepthStencilState(Effect.GraphicsDevice.DepthStencilStates.Default);
Effect.GraphicsDevice.SetBlendState(Effect.GraphicsDevice.BlendStates.Default);
}
return true;
}
示例4: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
if (drawingReason == DrawingReason.ShadowDepthMap)
return false;
camera.UpdateEffect(Effect);
Effect.World = Matrix.Scaling(1, 0.5f, 1)*Matrix.Translation(camera.Position);
_sphere.Draw(Effect);
return true;
}
示例5: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
camera.UpdateEffect(Effect);
Effect.DiffuseColor = new Vector4(0.6f, 0.6f, 0.6f, 1);
Effect.Texture = _texture;
_caveModel.Draw(Effect.GraphicsDevice, CaveWorld, camera.View, camera.Projection, Effect.Effect);
Effect.Texture = _gratingTexture;
_gratingModel.Draw(Effect.GraphicsDevice, GratingWorld, camera.View, camera.Projection, Effect.Effect);
return true;
}
示例6: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
camera.UpdateEffect(Effect);
if (drawingReason != DrawingReason.ShadowDepthMap)
Effect.Texture = _texture;
_model.Draw(Effect.GraphicsDevice, World, camera.View, camera.Projection, Effect.Effect);
return true;
}
示例7: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
camera.UpdateEffect(Effect);
Effect.World = World;
if (drawingReason != DrawingReason.ShadowDepthMap)
{
Effect.Texture = _texture;
//TODO Effect.Parameters["BumpMap"].SetResource(_bumpMap);
}
_cube.Draw(Effect);
return true;
}
示例8: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
var testSphere = new BoundingSphere(Vector3.TransformCoordinate(_boundingSphere.Center, World), _boundingSphere.Radius);
if (camera.BoundingFrustum.Contains(testSphere) == ContainmentType.Disjoint)
return false;
camera.UpdateEffect(Effect);
Effect.Texture = _texture;
var world = Matrix.RotationZ((float) _bob1.Value)*Matrix.RotationX((float) _bob2.Value)*World;
_model.Draw(Effect.GraphicsDevice, world, camera.View, camera.Projection, Effect.Effect);
return true;
}
示例9: Draw
public void Draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
_serpents.Draw(camera, drawingReason, shadowMap);
camera.UpdateEffect(_signEffect);
var sb = _serpents.LContent.SpriteBatch;
var font = _serpents.LContent.Font;
var text = string.Format("Entering scene {0}", 1 + _scene);
_signEffect.World = Matrix.BillboardRH(_signPosition + Vector3.Left * 0.1f, _signPosition + Vector3.Left, -camera.Up, Vector3.Right);
_signEffect.DiffuseColor = new Vector4(0.5f, 0.4f, 0.3f, 1);
sb.Begin(SpriteSortMode.Deferred, _signEffect.GraphicsDevice.BlendStates.NonPremultiplied, null, _signEffect.GraphicsDevice.DepthStencilStates.DepthRead, null, _signEffect.Effect);
sb.DrawString(font, text, Vector2.Zero, Color.Black, 0, font.MeasureString(text) / 2, 0.010f, 0, 0);
sb.End();
}
示例10: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
camera.UpdateEffect(Effect);
if (drawingReason != DrawingReason.ShadowDepthMap)
Effect.Texture = _texture;
foreach (var mesh in _model.Meshes)
{
Effect.World = _bones[mesh.ParentBone.Index]*World;
//Effect.Apply();
mesh.Draw(Effect.GraphicsDevice, null, Effect.Effect);
}
return true;
}
示例11: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
camera.UpdateEffect(Effect);
if (drawingReason == DrawingReason.ShadowDepthMap)
Effect.CameraPosition = shadowMap.RealCamera.Position;
Effect.World = World;
Effect.Parameters["WindTime"].SetValue(Time);
Effect.Parameters["BillboardWidth"].SetValue(Width);
Effect.Parameters["BillboardHeight"].SetValue(Height);
Effect.Texture = _treeTexture;
Effect.GraphicsDevice.SetVertexInputLayout(_vertexInputLayout);
Effect.GraphicsDevice.SetVertexBuffer(_vertexBuffer);
Effect.Effect.CurrentTechnique.Passes[0].Apply();
Effect.GraphicsDevice.Draw(PrimitiveType.TriangleList, _vertexBuffer.ElementCount);
return true;
}
示例12: Draw
public void Draw(Camera camera, Matrix world, DrawingReason drawingReason)
{
camera.UpdateEffect(Effect);
Effect.World = world;
var distance = Vector3.Distance(camera.Position, world.TranslationVector);
var lod = 3;
if (distance < 1800)
lod = 2;
if (distance < 600)
lod = 1;
if (distance < 300)
lod = 0;
if (drawingReason != DrawingReason.Normal)
lod++;
_loPlane.Draw(Effect, lod);
}
示例13: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
try
{
camera.UpdateEffect(Effect);
Effect.Parameters["Time"].SetValue(_time);
Effect.Apply();
Effect.GraphicsDevice.SetVertexBuffer(_vertexBuffer);
Effect.GraphicsDevice.SetVertexInputLayout(_vertexInputLayout);
Effect.GraphicsDevice.SetDepthStencilState(Effect.GraphicsDevice.DepthStencilStates.DepthRead);
if (Archipelag.SelectedClass != null)
drawArchsFromClass(Archipelag.SelectedClass, 2);
else
Effect.GraphicsDevice.Draw(PrimitiveType.LineList, _vertexBuffer.ElementCount);
}
catch (Exception)
{
}
return true;
}
示例14: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
camera.UpdateEffect(Effect);
Effect.Texture = _texture;
Effect.DiffuseColor = Vector4.One;
Effect.World = Matrix.Scaling(0.1f) * Matrix.Translation(_position1);
_sphere.Draw(Effect);
Effect.DiffuseColor = Vector4.Zero;
Effect.World = Matrix.Scaling(0.1f) * Matrix.Translation(_position2);
_sphere.Draw(Effect);
Effect.World = Matrix.Scaling(0.1f) * Matrix.Translation(_position3);
_sphere.Draw(Effect);
Effect.World = Matrix.Scaling(0.1f) * Matrix.Translation(_position4);
_sphere.Draw(Effect);
Effect.World = Matrix.Scaling(0.1f) * Matrix.Translation(_position5);
_sphere.Draw(Effect);
return true;
}
示例15: draw
protected override bool draw(Camera camera, DrawingReason drawingReason, ShadowMap shadowMap)
{
var p = Position;
var slinger = p.X + p.Z;
p += wormTwist(ref slinger);
camera.UpdateEffect(Effect);
var worlds = new List<Matrix>
{
_headRotation[HeadDirection]*
Matrix.Scaling(HeadSize)*
Matrix.Translation(p.X, HeadSize + p.Y + _ascendToHeaven, p.Z)
};
// p is the the loc of the last segement - which is the head on the first round
var segment = _tail;
while (true)
{
var p2 = segment.Position + wormTwist(ref slinger);
worlds.Add(
Matrix.Scaling(SegmentSize)*
Matrix.Translation(
(p.X + p2.X)/2,
SegmentSize + (p.Y + p2.Y)/2 + _ascendToHeaven,
(p.Z + p2.Z)/2));
worlds.Add(
Matrix.Scaling(SegmentSize)*
Matrix.Translation(
p2.X,
SegmentSize + p2.Y + _ascendToHeaven,
p2.Z));
p = p2;
if (segment.Next == null)
break;
segment = segment.Next;
}
if (_pendingEatenSegments <= SegmentEatTreshold/2)
worlds.RemoveAt(worlds.Count - 1);
if (_layingEgg > 0 && worlds.Count >= 3)
{
Effect.Texture = _eggSkin;
_eggWorld = worlds.Last();
Egg.Draw(_textureEffect, _eggSkin, TintColor(), _sphere, _eggWorld, segment.Whereabouts.Direction);
//move the last two spheres so that they slowly dissolves into the serpent
var factor = MathUtil.Clamp(_layingEgg/TimeForLayingEggProcess - 0.5f, 0, 1);
var world1 = worlds.Last();
worlds.RemoveAt(worlds.Count - 1);
var world2 = worlds.Last();
worlds.RemoveAt(worlds.Count - 1);
var world3 = worlds.Last();
world2.TranslationVector = Vector3.Lerp(world2.TranslationVector, world3.TranslationVector, factor);
world1.TranslationVector = Vector3.Lerp(world1.TranslationVector, world2.TranslationVector, factor);
worlds.Add(world2);
worlds.Add(world1);
}
Effect.Parameters["BumpMap"].SetResource(_serpentBump);
Effect.DiffuseColor = TintColor();
Effect.Texture = _serpentHeadSkin;
Effect.World = worlds.First();
_sphere.Draw(Effect);
Effect.Texture = _serpentSkin;
foreach (var world in worlds.Skip(1))
{
Effect.World = world;
_sphere.Draw(Effect);
}
Effect.DiffuseColor = Vector4.One;
return true;
}