opengl es着色器程序标识和vbo缓冲区标识相同
我使用vbo在opengl es 2.0中绘制了2个三角形。
程序句柄(hProgramHandle)
hProgramHandle = glCreateProgram(); // value is 210003
与iVertBuffId相同
glGenBuffers(1, &iVertBuffId1); // for vertices // 70001
...
...
glGenBuffers(1, &iVertBuffId2); // for color // 140002
...
...
glGenBuffers(1, &iVertBuffId3); // for texture // 210003
我创建了3个缓冲区(每个用于位置,颜色和纹理)。 上面的问题在为纹理生成缓冲区时即将到来。
我没有得到输出。
opengl会为程序ID和vbo缓冲区ID生成相同的数字吗?
实际上,OpenGL返回的ID实际上是指其内部存储的名称。 内部OpenGL存储按专业划分,因此可以随意优化其内存访问。 这与直觉相反的地方在于,ID实际上并不是唯一的,而是取决于你在说什么OpenGL:例如,当前绑定的内容。
OpenGL为你提供相同的ID是绝对正确的,只要它们指向不同的东西:纹理ID和缓冲区ID可以重叠,这不是问题。
注意它们可能重叠也可能不重叠,并且按顺序从0开始,或者简单地给你看起来像是随机数的东西,也就是依赖于实现。
这取决于您正在运行的特定OpenGL ES驱动程序的实现,但是值可以相同,因为它们是不同类型对象的句柄,而不一定是内存指针。 将它们视为指向不同数据结构的索引。
链接地址: http://www.djcxy.com/p/52431.html