XNA странный разрыв ландшафта
Позвольте мне сначала опубликовать изображения...
Сплошной выстрел, где происходит разрыв
И каркасный снимок этого места
Я в основном использую в основном учебник Riemers, в то время как код рендеринга..
Основной рендер
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-карты...), поэтому мне интересно, есть ли у кого-нибудь какие-нибудь идеи, что может вызвать это?
1 ответ
Временно закомментируйте код начала, прорисовки и завершения spritebatch и посмотрите, будет ли это иметь значение. Это может или не может быть в зависимости от порядка вершин в буфере.
Если это поможет, ваше решение можно найти здесь: http://blogs.msdn.com/b/shawnhar/archive/2010/06/18/spritebatch-and-renderstates-in-xna-game-studio-4-0.aspx