2010-10-08 115 views
0

有什麼辦法可以爲glDrawElements使用不同大小的緩衝區?我以某種方式想要將頂點映射到紋理座標,以便紋理座標緩衝區能夠實際上比頂點緩衝區更小。針對頂點和紋理座標的不同大小的緩衝區?

示例:頂點緩衝區有16個頂點,紋理座標緩衝區有6個頂點。

vertex_buffer[0] -> texture_coordinates_buffer[0] 
vertex_buffer[1] -> texture_coordinates_buffer[1] 
vertex_buffer[2] -> texture_coordinates_buffer[2] 

vertex_buffer[3] -> texture_coordinates_buffer[3] 
vertex_buffer[4] -> texture_coordinates_buffer[1] 
vertex_buffer[5] -> texture_coordinates_buffer[2] 

... 

感謝每一個小暗示在哪裏尋找什麼。

回答

0

你不能在OpenGL(或Direct3D)中做到這一點。屬性數組中元素的數量必須全部相等,例如如果你有一個由64個頂點組成的VBO,你將需要64個texcoords,64個法線等等。

只有這種特殊映射的方法是將texcoords作爲額外的緩衝區數據並使用gl_VertexID來獲取它並解決你的映射。

見擴展texture_buffer_object