我一直在使用旧的Qt OpenGl方法,但是现在该切换到新的方法了。
被正确初始化的FIBITMAP *位图
对我来说就像一个魅力。
但是现在在较新的方法中,首选使用QOpenGLTexture
不幸的是,我的尝试没有成功。
该代码返回1x1纹理,但是如果我像
qtexture具有适当的大小,但它是完全黑色的,我也尝试在Qt / Freeimage论坛等中进行搜索,但是没有任何关系,不幸的是每个人都使用QImage来提供QOpenGLTexture,但是不幸的是,我需要支持.hdr或.h等一些“奇怪的”文件格式。 Qt本身不支持的exr。
预先感谢您的宝贵时间!
最佳答案
对于QOpenGLTexture
,必须在Size
之前设置Format
,allocateStorage
。最后一步是setData
。
QOpenGLTexture *text = new QOpenGLTexture(QOpenGLTexture::Target2D);
text->setMinMagFilters(QOpenGLTexture::Linear, QOpenGLTexture::Linear);
text->create();
// given some `width`, `height` and `data_ptr`
text->setSize(width, height, 1);
text->setFormat(QOpenGLTexture::RGBA8_UNorm);
text->allocateStorage();
text->setData(QOpenGLTexture::Red, QOpenGLTexture::UInt8, data_ptr);
关于c++ - 来自原始数据的QOpenGLTexture(Qt)(freeimage),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32666824/