【发布时间】:2013-05-19 17:46:04
【问题描述】:
让我先发布图片...
发生撕裂的实心镜头
还有那个地方的线框图
我主要使用Riemers tutorial,而渲染代码是..
主渲染
public void Render()
{
device.Clear(Color.CornflowerBlue);
RasterizerState rs = new RasterizerState();
rs.CullMode = cullmode;
rs.FillMode = fillmode;
device.RasterizerState = rs;
effect.Parameters["xView"].SetValue(camera.ViewMatrix);
effect.Parameters["xProjection"].SetValue(camera.ProjectionMatrix);
effect.Parameters["xWorld"].SetValue(Matrix.Identity);
effect.Parameters["xEnableLighting"].SetValue(true);
effect.Parameters["xLightDirection"].SetValue(lightDirection);
effect.Parameters["xAmbient"].SetValue(0.5f);
globals.game.terrain.Render();
globals.game.spriteBatch.Begin();
globals.console.Render();
globals.game.spriteBatch.End();
}
Terrain.Render()
public void Render()
{
globals.game.graphics.effect.CurrentTechnique = globals.game.graphics.effect.Techniques["Colored"];
globals.game.graphics.effect.Parameters["xWorld"].SetValue(worldMatrix);
foreach (EffectPass pass in globals.game.graphics.effect.CurrentTechnique.Passes)
{
pass.Apply();
globals.game.graphics.device.Indices = indexBuffer;
globals.game.graphics.device.SetVertexBuffer(vertexBuffer);
globals.game.graphics.device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, vertices.Length, 0, indices.Length / 3);
}
}
我被这个问题困扰了很长时间(不知道这是否是由我的编码技能、xna 或一些 g 卡配置引起的......)所以我想知道是否有人有一些想法可能导致它?
【问题讨论】:
-
@DanNeely 我无法发布超过 2 个网址...这就是我削弱 Reimers 链接的原因..
-
暂时注释掉 spritebatch 的开始、绘制和结束代码,看看是否有区别。它可能取决于缓冲区中的顶点顺序,也可能不取决于。如果确实有帮助,可以在这里找到您的解决方案:blogs.msdn.com/b/shawnhar/archive/2010/06/18/…
-
@SteveH 是的。那成功了……谢谢你!我永远不会认为 2d 文本渲染会破坏 3d 渲染......
标签: c# .net xna terrain tearing