2017-02-16 7 views
2

OpenGL 프로젝트를 OpenGL ES 1.x로 수정하려고합니다. 그러나 함수 호출을 대체 할 솔루션을 찾을 수 없습니다.OpenGL ES 1.x에서 glPushAttrib (GL_CURRENT_BIT)을 구현하는 방법

glPushAttrib(GL_CURRENT_BIT | GL_LIGHTING_BIT | GL_COLOR_BUFFER_BIT | GL_ENABLE_BIT); 

OpenGL ES 1.x에서 GL_CURRENT_BIT 마스크 및 glPushAttrib 함수를 찾을 수 없습니다.

단순히 glPushAttrib 매개 변수에서 GL_CURRENT_BIT 마스크를 제거하면 응용 프로그램이 잘못된 배경을 윈도우에 표시합니다. (OpenGL 환경에서 테스트했는데 배경은 texutre입니다.) glPushAttrib (GL_CURRENT_BIT)를 대체 할 수있는 솔루션이 있습니까? OpenGL에서 올바르게 응용 프로그램을 실행하게하거나 OpenGL과 OpenGL ES에서 모두 실행할 수있는 glPushAttrib (GL_CURRENT_BIT)을 구현하는 솔루션이 있습니까? 감사!

답변

1

glPushAttrib은 OpenGL ES에 없습니다. GL_CLIENT_PIXEL_STORE_BIT을 입력으로 사용하려는 함수는 실제로는 glPushClientAttrib이며, 존재하지도 않습니다 (따라서 상수도 마찬가지입니다).

이 기능은 본질적으로 glPixelStorei 기능으로 설정할 수있는 모든 상태를 저장하는 것입니다. 이것은 설정된대로 이러한 상태를 기록하고 glPixelStorei에 해당하는 호출을 사용하여 수동으로 구현하여 복원 할 수 있습니다. 토론에 대한 내용은 here (항목 # 8)을 참조하십시오 (OpenGL에 대해서는 OpenGL ES에 적용됨, 즉 glPush/PopClientAttrib이 없음).

+0

답변 해 주셔서 감사합니다. 미안하지만, 나는 틀린 상수를 쓴다. 정말 물어보고 싶은 것은 GL_CURRENT_BIT입니다. glPushAttrib (GL_CURRENT_BIT)를 대체 할 솔루션이 있습니까? –

+0

다른 상태를 제외하고 동일한 해결책이 수정 된 질문에 적용됩니다. 'glPushAttrib'에 대한 링크로 가면 어떤 상태로 저장되는지를 나타내는 표가 있습니다. GLES에서는 코드에서 이러한 설정을 기록하고 다시 동일한 기능을 사용하도록 설정해야합니다. – MuertoExcobito

+0

고마워, 나는이 문제를 해결했다. glues라는 오픈 소스 프로젝트를 찾았습니다. glPushAttrib 함수를 구현합니다. 다시 한 번 감사드립니다. –