0
我正在做一些3D紋理的工作,並且我在OSX上遇到了一些問題。我用來生成3D紋理的代碼在Windows和LINUX上運行良好,但在OSX上它更常崩潰。代碼看起來像這樣:發生OpenGL 3D紋理生成崩潰
#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錯誤,它的嘗試訪問的地址是遠遠超出分配的緩衝區。
您是否嘗試檢查錯誤?也沒有意義,但不應該使用GLfloat來實現可移植性? – 2014-09-23 03:23:19
您列出的代碼中似乎存在大約4或5個印刷錯誤(所有與'LUT_3D_RESOLUTION'有關的錯誤)。你把它粘貼好了嗎? – 2014-09-23 04:07:58
我在Mac上試過這些代碼行,無法重現崩潰。這是你做的唯一的事情嗎?或者你有一些可能影響到這一點的狀態?像像素存儲參數一樣?還是解壓縮緩衝區? – 2014-09-23 05:18:08