2011-05-03 14 views
8

iPhone 3GS가 출시 된 이후로 얼마 지나지 않아 일 수도 있고 일 수 있습니다. OpenGL ES 2.0 지원 장치로 충분히 시장 점유율을 확보 할 수 있습니다. OpenGL ES 1.1에서 OpenGL ES 2.0으로 전환

그러나 상황은 많은 개발자가 아마 이미 OpenGL을 ES에 큰 코드베이스가 1.1

어떻게 하나 transitionf 롬 ES 1.1 ES 2.0? GL_FOG, GL_CULL 같은 것들뿐만 아니라 행렬을 돌봐야 할 필요가 있을까요?

예를 들어, 자신의 glTranslatef, glPushmatrix 등의 함수에 "대체"를 쓸 수 있습니까? 이 평균 성능에 영향을 줍니까?

ES 2.0으로 전환하기위한 다른 고려 사항은 무엇입니까? 명백한 장치 지원 문제 외에 어떤 장점과 단점이 이들 중 하나를 사용하여 제공됩니까?

stackoverflow의 표준 es 태그와 비교하여 2.0 태그의 양을 살펴보면 아직 2.0 시간이 아닌 것처럼 보입니다.

답변

17

을 @jer합니다. 한 가지만, 2.0이나 쉐이더와 관련된 모든 질문이 그처럼 태그가 붙는 것은 아닙니다. 또한 OpenGL ES 1.1에 대한 많은 정보가 iPhone SDK 출시 직후에 발표되었으므로 사람들은 해당 API에 대해 더 잘 알고 있습니다. 주제에 대한 나의 한 클래스 세션이 my course videos에서 가장 인기가 있다는 사실에서 알 수 있듯이 OpenGL ES 2.0에 많은 관심이 있습니다.

대부분의 경우 지오메트리를 처리하는 방법은 프레임 버퍼와 같은 것들과 1.1에서 2.0 사이에서 동일하지만 내장 함수에 의해 결정되는 것에서부터 자신의 셰이더로 옮겨지는 것까지 모든 것이 바뀝니다. 모델 뷰 매트릭스 나 텍스처를 사용하는 것과 같은 간단한 함수를 복제하기 위해 코드를 작성해야하지만 셰이더에는 몇 줄만 필요합니다. 예를 들어, 정점을 조정하기 위해 모델 뷰 행렬을 사용하여 정점 쉐이더에서이 같은 라인을 배치하는 것만 큼 간단하다 : 개인적으로

vec4 transformedPosition = modelViewProjMatrix * position; 

, 내가 무엇을 효과적으로를 조작하는 등 glRotate() 함수 a long while ago using the Core Animation helper functions 교체 모델 뷰 매트릭스입니다. 이로 인해이 코드는 OpenGL ES 2.0으로 옮겨갔습니다.

Jeff LaMarche는 그의 문서 here에서 대부분의 쉐이더 프로그램 설정 코드를 래핑하기 위해 매우 유용한 도우미 클래스를 가지고 있습니다.

OpenGL ES 1.1로 전환하는 방법에 대한 훌륭한 안내서는 책 GPU Pro의 "OpenGL ES 1.0에서 OpenGL ES 2.0으로 마이그레이션"문서를 참조하십시오. 무료로 제공되는 설명서에서 찾을 수 있습니다 PowerVR SDK.

이전 답변 herehere에서 OpenGL ES 2.0이 좋은 점을 설명했지만 새로운 API가 제공 할 수있는 것과 관련하여 이전과 이후를 보여주는 것이 유용 할 수 있습니다.

는 OpenGL ES 1.1 :

OpenGL ES 1.1

는 OpenGL ES 2.0 :

OpenGL ES 2.0

바라건대, 당신은 쉐이더와 내장 함수의 일부를 대체하는 수익을 볼 수 있습니다.

+0

당신의 포인트를 잘 보여줍니다. 당신은 분자 응용 프로그램을 만든 사람입니까? 나는 사진에서 그 예를 추측하고있다, 실행 요금은 오른쪽에 관해 거의 같다? – kamziro

+0

@kamziro - 네, 그게 나예요. 위의 스크린 샷은 이번 주말까지 검토해야하는 2.0 버전의 것입니다. 내 1.1 예제에서와 같이 단순히 음영 처리 된 기하학과 내 2.0 하나에서 절차 적으로 생성 된 부드러운 구체 사이의 성능 차이를 보지 못한다고 말하는 것이 아닙니다. 고급 효과를 끌어낼 수 있다는 것입니다. 내 2.0 렌더러는 1.1보다 상당히 느리지 만 사과와 오렌지를 비교하는 것은 후자의 경우가 훨씬 더 많기 때문입니다. 1.1에서 두 번째 이미지 근처에 들어가기 위해 필요한 도형의 크기는 GPU를 손상시킵니다. –

1

기존 프로젝트가있는 경우 필요한 노력이 그만한 가치가 있다고 생각하는 경우 2.0으로 이동하지 않는 것이 좋습니다. 즉, 어떤 새로운 프로젝트라도 내 의견으로는 1.1을 더 이상 고려하지 않아도됩니다. 판매 된 대부분의 기기는 3GS 또는 4S이며, 둘 다 2.0을 처리 할 수 ​​있습니다.

1

OpenGL ES 2.0에는 OpenGL ES 1.1과 관련하여 몇 가지 공통점이 있습니다. 각 렌더링마다 쉐이더가 필요합니다. 예를 들어 FOG도 쉐이더로 생성됩니다. 그러나 당신은 더 많은 힘을 가질 것입니다. 는 OpenGL ES 2.0을 사용할지 여부를 결정하려고 할 때

+1

은 스택 오버플로에 태그 활동에 의해 이동하지 마십시오 그의 대답