【发布时间】:2015-10-10 09:23:02
【问题描述】:
我想将字节数组读入 3D 纹理。
QFile file(filename);
if(!file.open(QIODevice::ReadOnly))
{
return false;
}
QByteArray* data = new QByteArray(file.readAll(), m_ImageWidth*m_ImageHeight*m_ImageCount );
glGenTextures(1, m_textures);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_3D, m_textures[0]);
glTexImage3D(GL_TEXTURE_3D, 0, GL_LUMINANCE, m_ImageWidth, m_ImageHeight, m_ImageCount,
0, GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
我可以这样做吗?我在我的项目中遇到访问冲突,我想检查它们是否来自这里。
这是glTexImage3D()的写违规
【问题讨论】:
-
请注意,没有理由在堆上创建 QByteArray。
-
对于所有其他查看者,错误是由于未正确初始化
m_textures数组引起的。 -
顺便说一句,
QByteArray实现了 COW,因此您不需要使用 new 分配数组实例。只需在堆栈上创建它。 -
我没听说过,谢谢!