我在使用3D纹理做了一些工作,我在OSX上遇到了一些障碍。我用来生成3D纹理的代码在Windows和LINUX上工作正常,但在OSX上它经常崩溃。代码如下:
#define LUT_3D_RESOLUTION 32
glEnable(GL_TEXTURE_3D);
float* buffer = new float[LUT_3D_RESOLUTION*LUT_3D_RESOLUTION*LUT_3D_RESOLUTION*4];
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, (int)LUT_3D_RESOLUTION, (int)LUT_3D_RESOLUTION, (int)LUT_3D_RESOLUTION, 0, GL_RGBA, GL_FLOAT, 0);
glTexSubImage3D(GL_TEXTURE_3D,0,0,0,0,(int)LUT_3D_RESOLUTION,(int)LUT_3D_RESOLUTION,(int)LUT_3D_RESOLUTION,GL_RGBA,GL_FLOAT,buffer);
glFlush();
glDisable(GL_TEXTURE_3D);
崩溃发生在glTexSubImage3D映像上,我收到一个EXC_BAD_ACCESS错误,它尝试访问的地址超出了分配的缓冲区。
答案 0 :(得分:1)
原来,UNPACK_ROW_LENGTH先前已设置为非零值。将此值设置为零可解决问题。感谢那些回复的人。 -