![](/img/trans.png)
[英]Problems with drawing OpenGL objects from VBO using textures,normals & indexlist
[英]Draw different objects with differents textures on the same VBO OpenGL
我正在使用OpenGL,在我的程序中,使用不同的紋理繪制每個對象的各種幾何形狀(正方形,三角形等)。
我測試了使用VBO和着色器執行渲染,這很好地創建了每個對象的VBO。 當大量對象(150到200之間)出現問題時......這意味着對函數glDrawElements()
調用非常多:
glDrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
我發現最好的方法是創建一個包含要繪制的所有頂點的VBO(頂點,紋理坐標,索引等)。
這個問題是我不能為每個對象使用不同的紋理,因為VBO一次繪制所有幾何體。
問題是......執行我需要的最佳方式(最佳)是什么? 不使用已經棄用的函數或方法glBegin ()
/ glEnd ()
或glDrawArrays ()
(我正在使用open GL 3.0及更高版本)。
PD:我使用OpenGL和C ++。
如果要首先使用一個紋理渲染VBO,然后使用另一個紋理渲染VBO:
如果你想用一個紋理繪制VBO的一部分,而用另一個紋理繪制它的一部分你有幾個選項:
使用平鋪紋理
在一個紋理圖像中的含義您有更多對象的紋理。 有時它也被稱為紋理圖集 。 所以相應地改變紋理坐標。
如果在單個圖像中使用4x4紋理,則可以在單個VBO中使用16個不同的對象。 當然,您受限於您想要使用的紋理圖像的最大尺寸和紋理質量。
3D紋理和紋理數組
隨着gfx HW的進步,3D紋理和紋理數組也可用,因此你現在每個對象可以有一片紋理......無需在紋理之間切換......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.