首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt/OpenGL :使用glTexImage2D的程序崩溃

Qt/OpenGL :使用glTexImage2D的程序崩溃
EN

Stack Overflow用户
提问于 2016-08-04 14:27:46
回答 1查看 864关注 0票数 0

我在装纹理的时候出了问题。

以下是一种工作方式:

Works

代码语言:javascript
运行
复制
QImage t = QImage("/home/renaud/Desktop/img.jpg",0);           //LOAD IMAGE
t.convertToFormat(QImage::Format_RGBA8888, Qt::AutoColor);     //CONVERT TO RGBA
t = t.mirrored();                                              //MIRROR

t.save("image2.jpg", 0, -1);                                   //IMAGE SEEMS FINE

glBindTexture(GL_TEXTURE_2D, tex);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits());
glBindTexture( GL_TEXTURE_2D, 0);

我保存图像只是为了检查,一切都很好。

现在,我尝试从缓冲区加载一个图像,比如,当我用glTexImage2D加载它时,它会崩溃。以下是代码:

Crashes

代码语言:javascript
运行
复制
QImage img = QImage(<Buffer containing the data>, 1920, 1080, QImage::Format_RGB888);
img.convertToFormat(QImage::Format_RGBA8888, Qt::AutoColor);     
QImage t = img.mirrored();  

t.save("image2.jpg", 0, -1); //IMAGE SEEMS FINE

glBindTexture(GL_TEXTURE_2D, tex);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits());
glBindTexture( GL_TEXTURE_2D, 0);

所以在第二种情况下,我保存图像之前,我可以检查它,图像是完美的。

你知道为什么它会在glTexImage2D上崩溃,因为当我保存它的时候,图像看起来很好吗?

编辑:

如果我将GL_RGBA更改为GL_RGB,即使在保持QImage转换在RGBA上时,问题也得到了解决。为什么?

EN

Stack Overflow用户

回答已采纳

发布于 2016-08-04 15:31:10

QImage::convertToFormat返回转换后的新图像,但不要修改图像本身。

使用:

代码语言:javascript
运行
复制
img = img.convertToFormat(QImage::Format_RGBA8888, Qt::AutoColor);
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38770190

复制
相关文章

相似问题

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