문제

OpenGL-ES에 대해 내가 찾을 수있는 모든 문서는 "OpenGL-ES는 OpenGL과 같지만 많은 것들이 없다. 예를 들어 Glbegin이나 Glend는 없다"고 말한 것 같습니다.

그래, 그거 좋군. 그렇다면 또 무엇이 없습니까? 아니면 무엇이 있는지 목록이 있습니까? 안에? 아니면 포팅 가이드일까요?

(구체적으로, 나는 기존 GL 앱을 iPhone으로 옮기려고 노력하고 있지만, 반드시 Q를 iPhone으로 제한하고 싶지는 않습니다.)

도움이 되었습니까?

해결책

그만큼 "Opengl ES 1.1.12 차이 사양" (PDF)에서 링크 Khronos.org의 OpenGl ES 1.X 정보 페이지 OpenGL ES 1.X와 OpenGL 1.5의 차이점을 거칩니다. OpenGL ES 1.1은 iPhone에서 사용되는 버전입니다.

차이 사양은 내가 본 것 중 가장 간단한 문서는 아니지만 일반적으로 OpenGL 사양보다 읽기 쉽습니다. 호출하는 OpenGL 기능 목록을 얻은 다음 차이 문서를 검색하는 것이 좋습니다. OpenGl es에서 지원되는 경우를 보여 주며 지원이 부분적 인 경우 자세한 정보를 위해 전체 사양으로 이동할 수 있습니다.

다른 팁

질문에 답할 때의 문제의 일부는 많은 것들이 빠졌고 종종 거의 사용되지 않거나 적용 할 수없는 비트 플래그 세트입니다. 차이점을 설명하는 가장 좋은 문서는 실제로 구현 헤더입니다.

내가 작업중 인 프레임 워크를 위해 데스크탑과 iPhone 사이의 플랫폼을 완전히 교차로 만들기로 결정했습니다. 내가 그것을 알아내는 데있어 취하는 접근법은 OpenGL에서 쓰기 코드이며 어디에서 파괴되는지 확인합니다. 그런 다음 봅니다

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/ System/Library/Frameworks/OpenGLES.framework/Headers/ES1/gl.h

그리고 그것을 비교하십시오

/Developer/SDKs/MacOSX10.5.sdk/ System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/gl.h

이 헤더는 매우 간단하고 따르기 쉽습니다.

내가 지금까지 발견 한 주요 차이점은 Gldouble이 없다는 것입니다 (Glortho 및 Glfrustum과 같은 Gldouble을 사용하는 것은 Glfloat 버전 Glorthof 및 Glfrustumf가 있습니다). 또한 어떤 이유로 든 gluperspection 또는 gluperspectionf는 없습니다.

다음은 교체 낙하입니다.

void gluPerspective( GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar )
{
   GLfloat xmin, xmax, ymin, ymax;

   ymax = zNear * tan(fovy * M_PI / 360.0);
   ymin = -ymax;
   xmin = ymin * aspect;
   xmax = ymax * aspect;

   glFrustumf( xmin, xmax, ymin, ymax, zNear, zFar );
}

Glbegin과 Glend가 없으므로 Gldrawarray 또는 GldrawElements (선호)를 통해 모든 것을해야합니다. 빠르고 더러운 예 :

void draw( short x, short y, short w, short h )
{
    const GLshort t[8] = { 0, 0, 1, 0, 1, 1, 0, 1 };
    const GLshort v[8] = { x, y, x+w, y, x+w, y+h, x, y+h };

    glVertexPointer( 2, GL_SHORT, 0, v );
    glEnableClientState( GL_VERTEX_ARRAY );

    glTexCoordPointer( 2, GL_SHORT, 0, t );
    glEnableClientState( GL_TEXTURE_COORD_ARRAY );

    glDrawArrays( GL_TRIANGLE_FAN, 0, 4 );
}

Apple의 기술 노트를 확인하십시오 TN2230 "iPhone OS 용 Opengl ES 최적화" 포팅에 유용 할 수있는 다른 힌트의 경우.

지금까지 포팅은 나에게 상당히 고통스럽지 않았으며, 앱이 꽤 고급 OGL 작업을 수행하거나 완전히 지원되지 않는 기능을 사용하지 않으면 빌드 버튼을 누르면 문제를 발견 할 수 있으며 간단한 수정은 GL.H 파일. 실제로, ES로 포팅하면 좋은 최적화 된 렌더링 코드를 작성해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top