2014-09-23 2 views
0

Im은 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 오류가 발생하고,이 액세스하려고 주소가 할당 된 버퍼를 넘어 방법입니다.

+0

오류를 확인해 보셨습니까? 또한 moot하지만 당신은 이식성 목적으로 GLfloat를 사용해야합니까? –

+0

나열된 코드에 약 4 ~ 5 개의 오타가 있습니다 (모두 'LUT_3D_RESOLUTION'과 관련 있음). 제대로 붙여 넣었 니? –

+0

나는 Mac에서 이러한 코드 라인을 시도했지만 충돌을 재현 할 수 없었다. 이게 너 밖에없는거야? 아니면 이것에 영향을 줄 수있는 상태가 있습니까? 픽셀 저장 매개 변수와 비슷합니까? 또는 버퍼 압축을 풉니 다? –

답변

1

UNPACK_ROW_LENGTH가 이전에 0이 아닌 값으로 설정 되었음이 나타납니다. 이 값을 0으로 설정하면 문제가 해결됩니다. 답장을 한 사람들에게 감사드립니다. -