Opengl glBindBuffer和直接状态访问?
根据幻灯片23,以下情况属实: 非DSA:glGenBuffers+glBindBuffer DSA:glCreateBuffers 我试着写一个只有DSA的程序。使用Opengl glBindBuffer和直接状态访问?,opengl,opengl-4,Opengl,Opengl 4,根据幻灯片23,以下情况属实: 非DSA:glGenBuffers+glBindBuffer DSA:glCreateBuffers 我试着写一个只有DSA的程序。使用gldrawArrayIndirect绘图时,我被迫使用glBindBuffer沿glCreateBuffers 下面是一段工作代码: glCreateBuffers(1, &bufObj); glBindBuffer(GL_DRAW_INDIRECT_BUFFER, bufObj); //If deleted cre
gldrawArrayIndirect
绘图时,我被迫使用glBindBuffer
沿glCreateBuffers
下面是一段工作代码:
glCreateBuffers(1, &bufObj);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, bufObj); //If deleted creates SEGFAULT crash
glNamedBufferData(bufObj, sizeof(mydrawcall), mydrawcall, GL_STATIC_DRAW);
...
glDrawArraysIndirect(GL_TRIANGLES, 0);
是否为非DSAglBindBuffer
- 我是否缺少另一个较新的DSA功能,或者这是唯一的方法
glBindBufferRange(GL\u UNIFORM\u buffer
(或等效调用)的上下文。若要使用缓冲区存储顶点数据,则必须将该VAO绑定到上下文。若要使用缓冲区,则必须使用glBindBuffer
将缓冲区绑定到适当的位置,依此类推
使用缓冲区作为间接命令执行的源也是如此。这是一个渲染操作,因此在发出间接命令之前,缓冲区必须绑定到间接目标
但它只需要在您发出该命令时绑定。您不必在创建后立即绑定它。就在您实际调用glDrawArraysIndirect
“If deleted creates SEGFAULT crash”之前,您从何处获得此崩溃?因为如果您在glDrawArraysIndirect
中获得它,您就没事了。