2008-11-07 4 views
17

내가 OpenGL-ES에 대해 알 수있는 모든 문서는 "OpenGL-ES는 OpenGL과 비슷하지만 많은 것들을 필요로하지 않습니다. 예를 들어, glBegin 또는 glEnd. "OpenGL-ES의 "in"및 "out"은 무엇입니까? (OpenGL에서 이식)

네, 좋습니다. 그래서, 거기에없는 ELSE는 무엇입니까? 또는 의 목록이에 있습니까? 아니면 포팅 가이드일까요?

는 (특히, 나는 반드시 아이폰에 내 Q를 제한하지 않지만, 아이폰에 기존 GL 응용 프로그램을 이동하기 위해 노력하고있어.)

답변

12

"OpenGL ES 1.1.12 Difference Specification" (PDF) the OpenGL ES 1.X info page at Khronos.org에 링크 OpenGL ES 1.X와 OpenGL 1.5의 차이점을 설명합니다. OpenGL ES 1.1은 iPhone에서 사용되는 버전입니다.

차이 사양은 지금까지 본 가장 간단한 문서가 아니지만 일반적으로 OpenGL 사양보다 읽기가 쉽습니다. OpenGL 함수 목록을 가져 와서 차이 문서를 통해 검색하는 것이 좋습니다. OpenGL ES에서 지원되는 경우 표시되며 지원이 부분적 일 경우 자세한 내용을 보려면 전체 사양으로 이동하십시오.

+0

좋습니다. 죄송합니다. ES에 처음 오신 분, 질문을 올릴 때까지 Khronos 사이트를 찾지 못했습니다. ( – Olie

13

질문에 답하는 데 문제가되는 부분 중 많은 부분이 누락되어 있으며 거의 ​​사용되지 않거나 적용 할 수없는 비트 플래그 집합입니다. 차이점을 설명하는 가장 좋은 문서는 실제로 구현 헤더입니다.

프레임 워크에서 필자는 데스크톱과 아이폰간에 완전히 크로스 플랫폼을 만들기로했습니다. 내가 알아내는 방식은 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을 사용하는 모든 것이 GLOlothof 및 glFrustumf 버전을 가짐)입니다. 또한 어떤 이유로 든 gluPerspective 또는 gluPerspectivef가 없습니다. 더의 glBegin과 glEnd이 없기 때문에, 당신은 glDrawArray 또는 glDrawElements (선호)를 통해 모든 것을 할 필요가

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); 
} 

: 여기

교체의 하락이다. 신속하고 더러운 예 :

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); 
} 

체크 아웃 이식에 유용 할 수있는 몇 가지 다른 힌트에 대한 애플의 기술 노트 TN2230 "Optimizing OpenGL ES for iPhone OS".

지금까지 이식 작업은 상당히 고통스럽지 않습니다. 앱이 꽤 고급 OGL 작업을 수행하거나 완전히 지원되지 않는 기능을 사용하지 않는 한 빌드 버튼을 치면 문제를 찾을 수 있고 간단한 수정은 파고들 것입니다. gl.h 파일에서 약간. 실제로 ES 종류로 이식하면 좋은 최적화 된 렌더링 코드를 작성해야합니다.

+0

) 흥미 롭군요 : 어디서나 기술 노트를 찾을 수없는 것 같습니다.어떤 아이디어? – cbrulak

+0

직접 링크입니다. 물론 iPhone 개발자 액세스 (무료)가 필요합니다. http://developer.apple.com/iphone/library/technotes/tn2008/tn2230.html –

+0

아니요 - 애플은 (특성 적으로) 사물의 모습으로 페이지를 간단히 삭제했습니다. :( – Adam

관련 문제