2013-09-29 34 views
1

我渲染了很多軸對齊的3D立方體。每個立方體可以通過其立方體和/或顏色的中心的位置而彼此不同。這是我怎麼樣,使其現在OpenGL無着色器的實例化渲染

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

我DrawCube()只是呈現對應於立方體的每邊6輛四輪摩托車,使用glDrawElements存儲在VBO頂點數據。 glVertexPointer和glColorPointer用於設置屬性元素。

這可行,但我想通過使用可能glDrawElementsInstanced()使用Instanced rendering。但是由於項目的一些遺留代碼,我不得不使用固定功能管道。

是否可以使用固定管道進行此操作?如果是,我該如何告訴我的GPU使用voxel中心和顏色的實例vbo。

+1

您可以使用兼容性配置文件並僅在需要它們時(在新代碼中)切換着色器,然後再次關閉它們。這就是爲什麼有兼容性配置文件,使轉換更容易。 – datenwolf

+0

謝謝。這花了我一些時間,但我轉向兼容性配置文件 – iNFINITEi

回答

0

作爲datenwolf評論,我切換到兼容性配置文件。我使用了很多現有的固定管道代碼的Qt。所以我在每個實例化渲染之後綁定和解綁定着色器。