La suite fait partie du code. Il n'y a pas de problème lors de la compilation, mais il se bloque lorsqu'il est exécuté. Et ça casse dans la ligne de glTexImage3D. Qt version 4.5.3, et la classe "opengl" est héritée de QGLWidget.glTexImage3D se bloque dans QT
void opengl::initializeGL()
{
GLenum err = glewInit();
create_volumetexture();
}
void opengl::create_volumetexture()
{
int w = 256, h = 256, d = 225;
size_t size = w * h * d;
if (dataRGBA)
{
delete dataRGBA;
dataRGBA=NULL;
}
dataRGBA=new GLubyte[4*size];
for (int i=0; i<size; i++)
{
dataRGBA[4*i]=200;
dataRGBA[4*i+1]=0;
dataRGBA[4*i+2]=0;
dataRGBA[4*i+3]=100;
}
glGenTextures(1, &volume_texture);
// bind 3D texture target
glBindTexture(GL_TEXTURE_3D, volume_texture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glTexImage3D(GL_TEXTURE_3D_EXT, 0, GL_RGBA, w, h, d, 1, /*GL_LUMINANCE*/GL_RGBA, GL_UNSIGNED_BYTE,dataRGBA);
}
Avez-vous vérifié si glTexImage3D! = NULL? –