2014-10-27 42 views
-1

比方說,我們結合在OpenGL ES一個簡單的數組緩衝區:的OpenGL ES交錯頂點數組紋理ID

glBindBuffer(GL_ARRAY_BUFFER, m_dataVboID); 

然後我們告訴數組緩衝區我們的交織數據是如何構成的:

glVertexPointer(2, GL_FLOAT, VBO_SIZE_MULTIPLIER, BUFFER_OFFSET(0)); 
glColorPointer(4, GL_UNSIGNED_BYTE, VBO_SIZE_MULTIPLIER, BUFFER_OFFSET(sizeof(GLfloat) * 2)); 
glTexCoordPointer(2, GL_FLOAT, VBO_SIZE_MULTIPLIER, BUFFER_OFFSET(sizeof(GLfloat) * 2 + sizeof(GLubyte) * 4)); 

因此,我們有: 浮法X,浮法Ÿ UBYTE R,UBYTE克,UBYTE b,UBYTE一個 浮動TX,浮動TY

是否possib le在紋理id結尾處添加一個變量?我正在考慮在片段着色器中使用glVertexAttribPointer並使用texture2D來傳遞值。

會這樣嗎?

這裏的想法是,我可以使用單個glDrawArrays而不是綁定每個紋理ID。

回答

1

不可以。您只能同時綁定一定數量的紋理,並且無法在着色器*中將其切換。

但是,您可以使用array textures,它們基本上是......一組紋理。這要求每個紋理的大小相同,並且需要將每個紋理提前存儲到陣列中。

* NV_bindless_texture擴展可能允許它,但它尚未得到廣泛支持。

+0

非常好,這正是我正在循環。 – Grapes 2014-10-27 19:46:30