首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glGenBuffers通过返回零表示什么?

glGenBuffers通过返回零表示什么?
EN

Stack Overflow用户
提问于 2019-03-01 06:04:14
回答 1查看 962关注 0票数 0

我的程序在通过网络加载顶点数据刚启动后就创建了许多顶点缓冲区,然后在热循环期间偶尔删除或创建顶点缓冲区。它几乎总是像预期的那样工作,但有时在某些机器上,热循环中的缓冲区创建会产生零名称。

它看起来不像一个无效的状态,因为它会更早地触发。另外,文档和规范对于这种类型的错误还不够清楚。这是否意味着实现没有缓冲区名称?

我还找到了这条线。Topicstarter说,在将名字传递给glGenBuffers之前初始化它们可以解决他的问题。是否有必要初始化这些值?

EN

回答 1

Stack Overflow用户

发布于 2019-03-01 23:08:34

由于它似乎在某些机器上工作,所以返回0的glGenBuffer可能是由于设置不当的上下文。这里 davek20在glGenBuffers上也有同样的问题。他通过修复不正确的上下文设置来解决这个问题。

正如在GLFW的“入门”页面上所述,在“创建窗口和上下文”下面,它们声明

“如果机器上不支持所需的最低版本,则创建上下文(和窗口)失败。”

您的这些机器可能有正确的驱动程序,但可能不支持所有或某些版本的OpenGL,正如文档所述。

如果您正在使用GLFW_CONTEXT_VERSION_MAJORGLFW_CONTEXT_VERSION_MINOR,请考虑更改这些内容。我还建议检查上下文创建是否返回NULL (0)。

GLFW文档页面中的示例:

代码语言:javascript
复制
GLFWwindow* window;

if (!glfwInit())
    return -1;

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

window = glfwCreateWindow(960, 540, "OpenGL", NULL, NULL);
if (!window)
{
    glfwTerminate();
    return -1;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54938823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档