나는 wavefront 오브젝트 파서를 완성하고 있으며이를 사용하여 일반 메쉬 오브젝트를 구성하고 싶습니다. 내 엔진은 OpenGL 4와 쉐이더를 사용하여 엔진의 모든 것을 그립니다.일련의 하위 그룹으로 OpenGL의 메쉬 렌더링?
제 질문은 메쉬를 렌더링 할 때 최상의 렌더링 효율을 보장하는 방법에 관한 것입니다.
wavefront .obj file에는 일반적으로 많은 개체 하위 그룹이 지정되어 있습니다.
하위 그룹에 특정 재료 (예 : 반짝이는 붉은 색)가 지정 될 수 있습니다.
그래서 메쉬는 매우 복잡한 하위 그룹의 컬렉션 일 수 있습니다. 각각의 고유 한 재료가 할당되어 있습니다.
내 질문이 있습니다 -
Q. 음주 내가 따로 예를 들어, 각 하위 그룹을 그릴 필요 각 하위 그룹에 대해 glDrawElements가 호출 되었습니까? 이 맞으면
glDrawElements(GL_TRIANGLES, nNumIndicesInGroup, GL_UNSIGNED_INT, ((char*)NULL)+ first-vertex-offset);
(I 4 별도의 하위 그룹이 있다면 그래서, 나는함으로써 재료/텍스처 4 개 일정 변경()와 쉐이더 4 번을 호출, 네 glDrawElements 통화를해야 할 것이다) 다음 I 계산해야 : 서브 그룹의 시작 오프셋 (각각의 서브 - 그룹에 대한 별도의 인덱스 어레이 VAO 암시) 각 서브 그룹
인덱스들 정점
이것은 대단히 비효율적 인 것처럼 보입니다. 잘못된 나무를 짖고 있습니까? Wavefront obj wiki page에서 또한
:Smooth shading across polygons is enabled by smoothing groups.
s 1
...
# Smooth shading can be disabled as well.
s off
...
사람이 부드러운 음영 값을 나타냅니다 무엇을 제안 할 수 있습니다? 예 : s1, s2, s4 등
이 질문은, 위에서 언급했듯이, 정점 데이터가 무엇이고 무엇을 할 것인가에 대해 더 많이 알지 못하면 대답 될 수 없습니다. 재료, 쉐이더 등과 같은 질문은 모두 성능에 영향을 미칩니다. –