Не рисуется треугольник=(
В программе я вывожу квадрат из 2ух треугольников.
Вот вершины:
CUSTOMVERTEX Vershin[] =
{
{ 300.0f, 300.0f, 0.5f, 1.0f, 0x00000fff, }, // А
{ 150.0f, 300.0f, 0.5f, 1.0f, 0x00000fff, }, // В
{ 150.0f, 150.0f, 0.5f, 1.0f, 0x00000fff, }, // С
{ 150.0f, 150.0f, 0.5f, 1.0f, 0x00000fff, }, // D
{ 300.0f, 150.0f, 0.5f, 1.0f, 0x00000fff, }, // E
{ 300.0f, 300.0f, 0.5f, 1.0f, 0x00000fff, }, // F
// x y z rhw цвет
};
Далее создаю буфер и записываю в них вершины. Вывожу с помощью функции:
pDirect3DDevice->SetStreamSource( 0, pBufferVershin, 0, sizeof(CUSTOMVERTEX) );
pDirect3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
pDirect3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST , 0, 2 );
Но если поменять точки Д и Е местами, то рисуется только один треугольник(первый). Не могу этого понять. В чем разница???
Причина в backface culling.
То есть он рисуется, но потом отсекается? А почему=)?
Потому что у него нормаль направлена от камеры => это не лицевая грань. Вектор нормали задается порядком указания вершин треугольника.
Спасибо=) Стало понятней.
а в каком порядке дожны быть вершины? если вектор нормали (0,0,-1), для обратной поверхности(0,0,1) и чтобы было видно видимую и обратную поверхность?:(