gpt4 book ai didi

c++ - glGenTexture 只在主程序中有效吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:19:41 25 4
gpt4 key购买 nike

我之前已经将纹理加载到 openGL 中,效果很好。但是这次我想在渲染类的构造函数中加载纹理。 (我使用带有抽象基类作为接口(interface)的 MVC)。我最初试图加载一个 png 文件而不是像以前那样加载 bmp,所以我认为这与此有关,但是当我回到我的 bmp 代码时它仍然不起作用。所以我将 bmp 纹理代码移动到 main(同一个 MVC 项目的)中并且它可以工作。实际不起作用的部分是:

GLuint textureId;
glGenTextures(1, &textureId);
glBindTexture(GL_TEXTURE_2D, textureId);
//Map the image to the texture
glTexImage2D(GL_TEXTURE_2D,//This bit!!
0,
GL_RGB,
image->width, image->height,
0,
GL_RGB,
GL_UNSIGNED_BYTE,
image->pixels);

如果我逐步执行该程序,我会注意到 textureID 保持不变(没有更改为 1,因为没有纹理映射到它)

这是为什么?可以修复吗?

最佳答案

什么时候调用构造函数?您需要有效的 OpenGL 上下文才能进行任何 GL 调用。一个常见的错误是在全局范围内创建对象,这意味着对象是在程序开始时构造的,在调用 main() 之前,此时还没有创建 OpenGL 上下文。

关于c++ - glGenTexture 只在主程序中有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com