glGenBuffers 不设置缓冲区

Posted

技术标签:

【中文标题】glGenBuffers 不设置缓冲区【英文标题】:glGenBuffers does not set buffer 【发布时间】:2014-08-24 12:34:33 【问题描述】:

glGenBuffers(1, &bufferID)没有成功分配ID到bufferID有什么原因吗?

#define GL_GLEXT_PROTOTYPES 1
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glext.h>
#include <stdio.h>

int main (void) 
    GLuint bufferID = 0;
    glGenBuffers( 1, &bufferID );
    printf("bufferID: %d\n", bufferID);
    return 0;

编译为

g++ -o glTest glTest.c -lGL -lGLU

输出:

arrID: 0

我在 AWS EC2 g2.2xlarge 实例上使用 Ubuntu 14.04。

【问题讨论】:

【参考方案1】:

你需要一个当前的 opengl 上下文来调用任何 gl 函数。您可以使用 glx 或 egl 创建上下文并使其成为当前的。

【讨论】:

【参考方案2】:

您没有 GL 上下文,所以所有的赌注都没有了。在没有当前调用线程的上下文的情况下调用任何 GL 函数是完全未定义的行为。

【讨论】:

以上是关于glGenBuffers 不设置缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

如何设置索引缓冲区对象

仅在发布模式下使用 glGenBuffer 的未处理异常 - QT

初识OpenGL VBO顶点缓冲对象

在没有帧缓冲区的情况下转换反馈?

OpenGL中绑定点的目的?

glMapBufferRange 访问冲突