对于QOpenGLTexture,RGBAFormat和RGB5A1有什么区别?

时间:2017-01-27 00:11:08

标签: qt opengl-es

我知道RGBAFormat适用于ES 2,而RGB5A1是ES 3的标准配置,但据我所知,它们都将数据存储为RGB,每行5位,alpha位为1位。

我正在尝试使用ES 2和ES 3共有的格式。在某些设备上,两个中只有一个工作,并且都不适用于所有。

我打电话给QOpenGLTexture::setData QOpenGLTexture::RGBAQOpenGLTexture::UInt16_RGB5A1,如果这很重要的话。

1 个答案:

答案 0 :(得分:0)

我认为您在类型和无类型格式之间存在混淆。

RGBA与GL_UNSIGNED_BYTE与RGBA8相同

带有GL_UNSIGNED_SHORT_5_5_5_1的
RGBA与GL_RGB5_A1相同

这是如何运作的?

在ES2中考虑这个电话:

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,texture->m_width,texture->m_height,0,GL_RGBA,GL_UNSIGNED_BYTE,texture->m_data[0][0]);

在ES3中,可以通过两种不同的方式调用它:

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,texture->m_width,texture->m_height,0,GL_RGBA,GL_UNSIGNED_BYTE,NULL);

glTexImage2D(GL_TEXTURE_2D,0, GL_RGBA8 的,提升口感> m_width的,提升口感> m_height,0,GL_RGBA,GL_UNSIGNED_BYTE,NULL);

对于您的具体情况,如果您想匹配不同版本之间的格式,我认为您应该坚持使用GL_RGBA8和GL_UNSIGNED_BYTE。