Clock count wise doesn't work

Started by
5 comments, last by anders211 12 years, 1 month ago
I have:
pDev->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW);

and I have vertex and index buffer as below:

NormalVertex2 vertsProstokat[] =
{
NormalVertex2(0.0f, 0.0f, 0.0f, 0.0f, 1.0f), //0 (x,y,z,u,v)
NormalVertex2(0.0f, 1.0f, 0.0f, 0.0f, 0.0f), //1
NormalVertex2(1.0f, 0.0f, 0.0f, 1.0f, 1.0f), //2
NormalVertex2(1.0f, 1.0f, 0.0f, 1.0f, 0.0f), //3
};
u32 faceProstokat[] = {0,1,2, 2,1,3};
Those vertices as we see define rectangular.
When I move my camera around 180 degree I don't see the rectangular. When I don't move camera more than 90 degree on the left or right I see the rectangular. I understand it because I have clock count-wise order, everything is OK, everything works as theory says.:)
But when I redefine indices container:
{1,0,2, 2,3,1}
I don't see rectangular at all no matter how I move my camera (0-360 degree). I don't understand it, because I believe that I should see rectangular if I move my camera around 180 degree and I shouldn't see the rectangular if I don't move camera more than 90 degree left/right.
Could somebody explain why I don't see the rectangular in this case?
Advertisement
That's because of winding order. By default D3D will cull triangles that are not specified in clockwise winding order. If you disable culling by setting [color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

pDev->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE); then it should be visible

[/font]

Yes, but if I define triangles in the not CCW order it doesn't mean that the triangles are always seen in not CCW order. Because when You turn back Your camera about 180 degree trinagles are in CCW order and they are not seen. This is what I don't understand.
When You define triangles in CCW order they are seen, and when You turn camera around 180 degree they are not seen. This is what is OK.
So I don't understand why triangles in not CCW order are never seen. It should be seen in opposite way to trinagles in CCW order.
it's not seen because those triangles are back facing polygons, like I said before if you wanna see those back facing polygons then disable culling
Yes, but if You move the camera around more than 90 degree, those triangles aren't back facing polygons. Their order is like CCW order. This is what I don't understand.
Maybe please see the image and You will know about what I was writing:
http://img543.imageshack.us/img543/9561/ordertriangles.jpg
Could you post the code for the draw call? Maybe something isn't specified correctly there.
OK, thanks, I analysed code once again and I have bug. All vertices are now drawn according to the theory.

This topic is closed to new replies.

Advertisement