2011-10-15 3 views
5

저는 cocos2d로 iPhone 응용 프로그램을 만들고 있는데, 다음 OpenGL ES 1.1 코드를 사용하려고합니다. 그러나, 나는 OpenGL에 좋지 않아서, 내 앱은 OpenGL ES 2.0을 사용하므로 변환해야한다. 궁금 따라서OpenGL ES 1.1에서 2.0으로 크게 변경 되었습니까?

, 얼마나 어려운 그것은 ES 2.0 ES 1.1에서 다음 코드를 변환하는 것? 어떤 메소드가 어떤 메소드를 대체해야하는지 알려줄 수있는 소스가 있습니까?

-(void) draw 
{ 
    glDisableClientState(GL_COLOR_ARRAY); 
    glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
    glDisable(GL_TEXTURE_2D); 

    glColor4ub(_color.r, _color.g, _color.b, _opacity); 
    glLineWidth(1.0f); 
    glEnable(GL_LINE_SMOOTH); 

    if (_opacity != 255) 
     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

    //non-GL code here 

    if (_opacity != 255) 
     glBlendFunc(CC_BLEND_SRC, CC_BLEND_DST); 

    glEnableClientState(GL_COLOR_ARRAY); 
    glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
    glEnable(GL_TEXTURE_2D); 
} 
+0

여기서 ES 또는 데스크톱에 대해 이야기하고 있습니까? 큰 차이를 만듭니다. 전자의 경우 (opengl 태그를 다시 생각해보십시오) 쉽지는 않을 것입니다. 후자의 경우 (es 태그를 제거하십시오) 근본적인 문제가 없어야합니다. –

+0

안녕하세요, iPhone이므로 ES입니다. – FBryant87

+1

아, 그래, 그걸 읽었어야합니다. 이 경우 포팅은 그리 쉽지는 않을 것이고 GLSL 셰이더에 들어가야 할 것입니다. –

답변

9

OpenGL에 적합하지 않다면 쉽지 않을 것입니다.

는 OpenGL ES 2.0은 더 이상 고정 기능 파이프 라인을 가지고 있지 않습니다. 즉, GLSL 정점 및 조각 쉐이더를 사용하여 정점 변환, 조명, 텍스처링 등을 직접 관리해야합니다. 또한 변환 자신 행렬을 추적 할 수 있고, 거기에 어떤 glMatrixMode, glPushMatrix, glTranslate, ... 더 이상.

더 이상 buitlin 꼭지점 속성이 없습니다 (예 : glVertex, glColor ...). 따라서 이러한 기능은 해당 배열 기능과 함께 (같은 glVertexPointer, glColorPointer, ...)과 gl(En/Dis)ableClientState는도 reomved되었다. 대신 당신이 자신의 정확한 의미를 속성을 제공하기 위해 해당 버텍스 쉐이더와 함께 (유사하게 동작 glVertexAttrib, glVertexAttribPointergl(En/Dis)ableVertexAttribArray) 일반 정점 속성 기능이 필요합니다.

난 당신이 쉐이더에 대해 들어 아무것도하지 않아도 적어도 경우, 정말 당신이 1.1에서 2.0으로 포팅로, 좋은의 OpenGL ES 2.0 튜토리얼이나 책으로 보면 큰 변화입니다 좋습니다.

+1

글쎄, 고마워, 처음부터 2.0 시도해 볼 수도 있습니다. 나는 2.0이 더 많은 가능성을 제공한다는 것을 이해하지만 1.1의 단축키도 제공 할 수는 없다. 나는 그들이 앉아서 "나는 버전 2.0에서 모든 것을 꺼내 사람들이 모든 것을 스스로 할 수있게 해준다"는 것을 믿을 수 없다고 생각한다. 나는 약간의 저수준 것들을 배우는 데 시간을내어 신경 쓰지 않지만 튜토리얼을보고 회전 큐브를 만드는 데 약 한 시간이 걸립니다. 나는 간단한 선 그리기 등을 위해 놀랐다. 누군가 더 나은 무언가를 가지고 오지 않았다. – FBryant87

+1

@ user666254 여러분은 이제 간단한 것들을 설정하는 것이 더 많은 노력을 필요로하며, 전체 API와 파이프 라인을 이해하지 않고는 많은 것을 할 수 없으므로 초보자를 배우는 것이 더 어렵습니다. 하지만 다른 한편으로는 (glBegin/glEnd와 같은) 잘못된 방법을 사용하는 것이 훨씬 더 어렵고 API가 훨씬 깔끔합니다. 그리고 어쨌든 쉐이더를 사용하지 않는 어플 리케이션을 발견하지는 못할 것입니다. (어쩌면 오늘 이겠지만, 내일이 아닐 수도 있습니다.) –

+1

@ user666254 더 나은 점이 있나요? 새로운 하드웨어 가속 API 하드웨어 공급 업체는 이미 존재하는 가능성의 하위 집합을 달성해야합니다. 별로 일어나지 않을 것입니다. 간단한 것들을 위해서 OpenGL ES 1.1을 사용할 수 있습니다. 그러나 어딘가에 미래로 진보해야합니다. –

관련 문제