2012-09-20 3 views
2

코드 시작 부분에 여러 텍스처를 설정했습니다 (C). 각각의 텍스처는 (에러없이) 올바르게 생성되고 나중에 사용할 수 있도록 이미지 구조에 텍스처 이름을 GLuint로 저장합니다. 프로그램 끝에서 GLuint는 GLdeleteTextures()로 다시 전달되고 프로그램이 종료됩니다.OpenGL GLDeleteTextures()가 첫 번째 텍스처를 삭제하지 못합니다.

문제는 GLDeleteTextures()를 처음 사용할 때 오류가 계속 발생하는 것입니다. 이후의 모든 GLDeleteTextures() 호출은 오류를 생성하지 않습니다.

오류 (gluErrorString에서)에 '잘못된 열거 자'가 나와 있습니다.

추가 정보 모든 텍스처는 glBindTexture (GL_TEXTURE_2D, NULL) 호출로 삭제되기 전에 바인딩 해제됩니다. 모든 텍스처 이름 (GLuints)은 생성시 확인되며 삭제할 때 사용되는 것과 동일한 이름입니다. 삭제할 때의 텍스처 순서가 중요하지 않으므로 삭제하는 것이 가장 좋습니다.

현재 해결 방법. 나는 ... 예를 들어 첫 번째 텍스처 작품에()

glDeleteTextures(1,&MyImage->texName); // Will produce 'invalid enumerant' 

glDeleteTextures(1,&MyImage->texName); // This time it will work! 

을 glDeleteTextures을 반복하는 것은 내가 두 번째 삭제 후 새로운 텍스처를 생성하고 텍스처 이름을 비교하여 위의 코드를 검사 한 것으로 나타났습니다. 텍스처는 실제로 두 번째 호출 후에 삭제되고 다시 시스템에 올바르게 배치됩니다.

나는 레드 북을 가지고 있으며 텍스처 삭제시 다소 모호합니다. 텍스처를 올바르게 삭제하기 위해 명시해야하는 일련의 단계가 있습니까?

+3

해당 라인이 오류를 생성하고 있습니까? glDeleteTextures 전에 이전 호출에서 오류가 보류중인 것 같습니다. 첫 번째 deleteTextures 전에 오류 검사 행을 이동하십시오. – Tim

+0

문제를 나타내는 [SSCCE] (http://sscce.org/)를 게시하십시오. – genpfault

+0

방금 ​​같은 결론에 도달했습니다. glDeleteTextures가 아닙니다. glEnable (GL_ALPHA)에서 오는 것 같습니다. 유령 같은. 고맙습니다. – Hol101

답변

0

오류는 glDeleteTextures()이 아니며 오히려 glEnable(GL_ALPHA)에서 왔습니다.

관련 문제