我一直在使用旧的Qt OpenGl方法,但是现在该切换到新的方法了。

被正确初始化的FIBITMAP *位图



对我来说就像一个魅力。

但是现在在较新的方法中,首选使用QOpenGLTexture

不幸的是,我的尝试没有成功。



该代码返回1x1纹理,但是如果我像



qtexture具有适当的大小,但它是完全黑色的,我也尝试在Qt / Freeimage论坛等中进行搜索,但是没有任何关系,不幸的是每个人都使用QImage来提供QOpenGLTexture,但是不幸的是,我需要支持.hdr或.h等一些“奇怪的”文件格式。 Qt本身不支持的exr。

预先感谢您的宝贵时间!

最佳答案

对于QOpenGLTexture,必须在Size之前设置FormatallocateStorage。最后一步是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/

10-11 15:33