Сообщение от Mr_F_
полигоны надо сортировать от дальних к ближним, чтобы альфа работала
учитывая что они у тебя пересекаются все друг другом... то придётся изначально в геометрии каждый разделить на кучу маленьких полигонов, полученных при пересечениях и сортировать уже их
либо авось сойдёт просто сортировать и рендерить без записи Z
|
1. А как сортировать полигоны? Ти имееш в виду, чтоб
DrawTriangleStrip() Отрисововала в первую очередь полигодны которие поближе к камере?? Или ето надо чото с шейдером сделать...?
2. А как ето без записи
Z???
Сообщение от pax
Я бы попробовал выключить zwrite и рисовать в два прохода - сначала внутренние грани, потом наружные.
|
Как выключить
zwrite?? И на счет граней - Использовать:
GraphicsDevice.RenderState.CullMode = CullMode.CullClockwiseFace;
GraphicsDevice.RenderState.CullMode = CullMode.CullCounterClockwiseFace;
???
Как решить проблему с неверной отрисовкой полигонов?
Когда я попробовал сделать так:
private void DrawTriangleStrip(Vector3 sizes)
{
effect.Begin();
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Begin();
for (int nx = 0; nx < sizes.Y; nx++)
{
GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionTexture>(
PrimitiveType.TriangleStrip,
pointListNX,
nx * 4, // vertex buffer offset to add to each element of the index buffer
4, // number of vertices to draw
triangleStripIndicesNX,
nx, // first index element to read
4 // number of primitives to draw
);
}
for (int ny = 0; ny < sizes.X; ny++)
{
GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionTexture>(
PrimitiveType.TriangleStrip,
pointListNY,
ny * 4, // vertex buffer offset to add to each element of the index buffer
4, // number of vertices to draw
triangleStripIndicesNY,
ny, // first index element to read
4 // number of primitives to draw
);
}
for (int nz = 0; nz < sizes.Z; nz++)
{
GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionTexture>(
PrimitiveType.TriangleStrip,
pointListNZ,
nz * 4, // vertex buffer offset to add to each element of the index buffer
4, // number of vertices to draw
triangleStripIndicesNZ,
nz, // first index element to read
4 // number of primitives to draw
);
}
pass.End();
}
effect.End();
}
Оно отрисовало верное количество полигонов, но нарисовало и много лишнего:
Что здесь не так я не понимаю... Прежняя версия
DrawTriangleStrip() на мой взгляд правильная, но неправильно работает... Посоветуйте мне что нибудь на счет етого...