Thursday, April 2, 2015

OpenGL ES 1.0에서 2.0으로 전환시 사용할수 없는 함수

OpenGL 2.0은 fixed function pipeline이 없으므로 무조건 GLSL을 사용해야 된다는 것은 익히 알려진 사실이다.

그러면 fixed function pipeline에서 사용하던 어떤 함수들을 사용할수 없을까?

1.0에서 2.0으로 전환하려면 단순하게 GLSurfaceView에서 다음과 같은 문장을 추가하게 되면 2.0을 사용하게 되는 환경으로 전환하게 된다.
setEGLContextClientVersion(2);

그런데 1.0으로 작성한 코드중에 대부분은 다음과 같은 에러가 발생하게 된다.
E/libEGL(7744): called unimplemented OpenGL ES API

이런 에러메세지들의 대부분은 vertex array에서 발생한다.
glEnableClientState, glDisableClientState, glVertexPointer, glTexCoordPointer, glColorPointer, glNormalPointer...

대신에 다음과 같은 함수를 써서 vertex attribute를 사용해야 한다.
glEnableVertexAttribArray, glVertexAttribPointer

그리고 텍스처 합성을 fragment shader에서 하기 때문에 glTexEnv*함수가 전체가 지원이 안된다.

마지막으로 transform 관련 함수가 vertex shader에서 지원하게 되므로 matrix관련 함수가 지원이 되지 않는다.
glMatrixMode, glTranslatef, glRotatef, glScalef, gluPerspective, gluOrtho2D...

http://stackoverflow.com/questions/7777605/opengl-es-1-1-to-2-0-a-major-change

No comments:

Post a Comment