首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ogl纹理crash窗口的加载

ogl纹理crash窗口的加载
EN

Stack Overflow用户
提问于 2012-12-12 03:33:42
回答 1查看 566关注 0票数 0

我使用lodePNG从png文件加载纹理,但当我加载纹理时程序崩溃。

代码语言:javascript
复制
char* filename = "texture.png";
unsigned width, height;
std::vector<unsigned char>image;
GLuint texture[1];
//decode
unsigned error = lodepng::decode(image, width, height, filename);
if(error) std::cerr << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl;
glBindTexture(GL_TEXTURE_2D, texture[0]);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0,
GL_RGBA, GL_UNSIGNED_BYTE, &image[0]);

我使用VS2010编译,没有错误,但当我调用glTexImage2D时发生崩溃。我的系统是Windows7,显卡支持OGL 3.3。

我有另一个系统,它是MacOSX10.6,我总是在移植代码,在Mac上完全没有问题。有什么建议的修复方法可以让它在窗口中正确加载纹理吗?

这是我获得lodePNG文件的站点:http://lodev.org/lodepng/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-05 20:16:36

在代码中,声明GLuint texture1,这是一个纹理句柄的数组。然后在该行上绑定到这个未初始化的纹理句柄:

代码语言:javascript
复制
glBindTexture(GL_TEXTURE_2D, texture[0]);

这是不正确的。您正在绑定到尚未初始化的纹理句柄。相反,您需要做的是通过调用glGenTextures来生成纹理句柄。然后,您可以绑定到纹理。所以试试这个:

添加以下内容:

代码语言:javascript
复制
glGenTextures(1,&texture[0]);

在此行之前:

代码语言:javascript
复制
glBindTexture(GL_TEXTURE_2D, texture[0]);

调用glGenTextures后,句柄(纹理)应为非零值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13827162

复制
相关文章

相似问题

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