我知道这是很基本的问题,但我有个顶点和纹理坐标和对应的缓冲器的阵列:如何从不同的缓冲区或数组发送数据进行渲染?
glBindBuffer(GL_ARRAY_BUFFER,vertexbuffer);
glBufferData(GL_ARRAY_BUFFER,sizeof(float)*Loader.verticesFixed.size(),&Loader.verticesFixed[0],GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,texturebuffer);
glBufferData(GL_ARRAY_BUFFER,sizeof(float)*Loader.texturesFixed.size(),&Loader.texturesFixed[0],GL_STATIC_DRAW);
,我不知道如何发送数据进行渲染。
我知道我可以合并顶点和纹理数组,使得我有一个数组有x1,y1,z1,u1,v1,x2,y2,z2,u2,v2 ...然后为此创建缓冲区数组,绑定它并使用glVertexAttribPointer以及特定的步幅和偏移量,属性0和1用于顶点和纹理坐标以及glDrawArrays。但是,我想知道是否有可能从多个缓冲区发送数据而不合并数组。
我在问这个,因为我想添加纹理到三维模型,如果我正确地理解了一切,有效地做到这一点,我需要发送数据着色器使用glVertexAttribPointer与不同的指数(位置)一起纹理一致。
您是否在问如何将两个非交叉数据数组上传到交织数据的OpenGL缓冲区?你必须自己完成交错,或者在你自己的缓冲区中用'glBufferData'或者'GLMapBuffer'处理GL缓冲区。 –
“*我需要使用具有不同索引(位置)和统一纹理的glVertexAttribPointer将数据发送到着色器。*”您指的是什么“不同的索引”?你的意思是使用位置索引列表和纹理坐标单独的索引列表吗? –