我想將字節數組讀入3D紋理。來自QFile的QByteArray
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來分配數組的實例。只需在堆棧上創建它。 –