2013-09-29 3 views
1

축 정렬 된 많은 3D 큐브를 렌더링 중입니다. 각 큐브는 큐브 및/또는 색상의 중심 위치에 따라 서로 다를 수 있습니다. 내가) 지금쉐이더가없는 OpenGL 인스턴스 렌더링

for (i = 0; i < num_of_cubes; ++i) { 
glTranslatef(center[i].x, center[i].y, center[i].z); 
DrawCube(); 
} 

내 DrawCube을 (를 렌더링하고 방법이 간단 VBO에 저장된 정점 데이터를 glDrawElements를 사용하여 큐브의 각면에 해당하는 6 쿼드를 렌더링합니다. glVertexPointer 및 glColorPointer는 속성 요소를 설정하는 데 사용됩니다.

이 작동하지만 아마도 glDrawElementsInstanced()를 사용하여 Instanced rendering을 사용하고 싶습니다. 그러나 프로젝트의 일부 레거시 코드로 인해 고정 기능 파이프 라인을 사용해야합니다.

고정 파이프 라인으로이 작업을 수행 할 수 있습니까? 그렇다면 어떻게하면 voxel 센터 및 색상의 인스턴스 vbo를 사용하도록 내 GPU에 지시합니까?

+1

호환성 프로파일을 사용하고 필요할 때만 쉐이더를 켠 다음 (새 코드에서) 쉐도우를 다시 켤 수 있습니다. 이것이 전환 프로파일을 쉽게 만들 수있는 호환성 프로파일이있는 이유입니다. – datenwolf

+0

감사합니다. 시간이 좀 걸렸지 만 호환성 프로파일로 바꿨습니다. – iNFINITEi

답변

0

datenwolf에 의해 논평 된대로, 나는 compatibilty 단면도에 전환했다. Qt를 사용하여 많은 기존의 고정 파이프 라인 코드를 사용하고있었습니다. 그래서 각 인스턴스 렌더링 후에 셰이더를 바인딩하고 언 바인드합니다.