m_pD3DDevice.SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
Direct3D에서 일반적으로, 반시계방향으로 감기는 폴리곤은 그 면이 반대 방향으로 향하는 폴리곤으로 취급해서 엔진에서 출력을 생략한다. 하지만 위의 것을 설정하면 어떻게 감겨 있는 폴리곤이라도 그대로 출력해 준다. 즉, 반대로 감아서 뒤집힌 스프라이트도 그릴 수 있다. 이것을 잘 이용하면 왼쪽으로 향한 이미지만 로딩한 후, 오른쪽으로 향한 이미지는 왼쪽으로 향한 이미지를 flip 해서 사용할 수 있게 된다.
굵게 표시된 글의 말뜻이 제대로 이해가 안가는데 쉽게 설명해주실분 없나요??
폴리곤 매쉬 표면의 노멀을 이야기 하는건데,
한마디로, 구체가 있다면, 삼각형들로 이루어져 있을거고, 그게 시계방향 정점으로 기록되었냐 아니냐에 따라 표면의 법선 벡터가 안 혹은 밖 방향을 가리키게 된다는거.
이때, 구체를 이루는 표면의 법선중 절반은 화면(카메라) 방향을 가리킬테고 반대편은 화면의 뒤 방향을 가리킬꺼잖ㅇ?
그래서 뒤를 가리키는 삼각형은 아예 버려버리는게 (그릴 필요없음) 기본 옵션이야.
그런데 그렇게 할 경우 정렬되지 않은 삼각형들은 카메라 반대편을 보고 있을수 있고 그러면 화면에 그려지지 않기 때문에
back face culling 이 되지 않도록 해주는 옵션이 저거임.
그걸 킬경우, 좌측 반구를 뒤집어 우측에 놓을때 삼각형을 이루는 정점들 순서가 바뀌지 않아서 법선 벡터가 뒤집어지지 않아 지워져버리는 문제를 해결할수 있다는것. 즉. 양면 에서 볼 수 있는 폴리곤이 된다는거지.
대신 z-buffer 상에서의 은면제거와 클리핑을 수행해야하니까 전체다를 저렇게 돌리면 좀 느려지지.
킬경우 -> 켤경우.
요약. 1 기본 옵션은 단면 폴리곤임 ( 빠름~ ). 대신 법선이(normal) 뒤집어지면 안보임. 2. CULLMODE 를 켜면 back face culling 을 기각함. 즉 양면 폴리곤이됨. 이때 아무렇게나 뒤집어서 써도 다 보임~ 대신 좀 느려짐.
노멀이 바깥쪽인 정상적인 구체도 밖에서 보면 다 보이지만 구 안으로 카메라를 옮기면 구체는 안보이고 바깥이 투과되어 보이지. 만약 저 옵션을 켜면 구체의 내면도 보이게 됨 : ) -> 양면폴리곤!