2012-02-20 4 views
1

내 지형 패치의 높이 맵을 보유하기 위해 16 비트 텍스처를 만들려고 시도하지만 다음 두 가지 모두 "잘못된 열거 형"오류를 반환합니다. CHECK_GL_ERROR() 매크로는 gluErrorString을 메시지로 표시하고 glGetError가 GL_NO_ERROR 이외의 값을 반환하면 중단됩니다. "잘못된 열거 형"16 비트 텍스처를 만들 때

CHECK_GL_ERROR(glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE16, width_, depth_, 0, GL_LUMINANCE, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/)); 
CHECK_GL_ERROR(glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA16, width_, depth_, 0, GL_ALPHA, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/)); 

i를 GL_TEXTURE_2D 대상에 바인딩 생성 된 텍스처와 함께 및없이 동일한 오류가 있습니다 : 나는에는 OpenGL 3.2 컨텍스트, NVIDIA CUDA dev에 드라이버 286.16을 사용하고

glPixelStorei(GL_UNPACK_ALIGNMENT, 2); 

GTX 560Ti. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니?

건배

답변

3

당신이 core context를 사용하는 경우는, 그 예상해야한다. GL_LUMINANCE 또는 GL_ALPHAimage formats이 더 이상 없습니다.

효과를 에뮬레이트하려면 단일 채널 이미지 형식을 만들어야합니다. 따라서 GL_R16은 내부 형식이어야합니다. 그런 다음 텍스처 오브젝트에 texture swizzle mask을 설정하여 단일 Red 채널이 RGB 또는 Alpha로 전송되도록합니다.

정말이 방법이 좋습니다.

+0

환상적인, 감사합니다 :) 지금 사용하고있는 OpenGL man 페이지가 최신 사양으로 업데이트되지 않았으므로 새 핵심 및 호환성 사양을 다루는 유사한 참조가 있습니까? – PsychoLogic

+0

@PsychoLogic : [이 참조] (http://www.opengl.org/sdk/docs/man/)에 대해 이야기하고 있다면, 그들은 특별히 2.1에 해당한다고 말합니다. 4.2 핵심 레퍼런스는 [위키] (http://www.opengl.org/wiki/OpenGL_Reference) 또는 [웹 사이트] (http://www.opengl.org/sdk/docs/man4/)에서 사용할 수 있습니다.). 이것은 단지 핵심적인 부분입니다. 호환성 스펙은 다루지 않습니다. –

관련 문제