2011-07-06 8 views
1

질문이 있습니다 -이 tutorial에서 OpenGL ES 2.0을 배우고 있으며이 웹 사이트를 이동하면서 회전하는 다각형으로 멋진 앱을 구축했습니다. 또 다른 guide에서 그는 정점 셰이더를 사용했습니다. 그들 사이의 차이점은 무엇입니까? 셰이더로 무엇을 만들 수 있습니까?버텍스 쉐이더 대 버텍스

답변

6

첫 번째 튜토리얼은 OpenGL ES 1.1을 사용하고 두 번째 튜토리얼은 OpenGL ES 2.0을 사용한다는 점이 다릅니다. 1.1은 고정 기능 파이프 라인을 사용하여 렌더링을 모두 수행했으며 2.0은 쉐이더 만 사용합니다.

이러한 모든 행렬 함수는 무엇입니까? glLoadIdentity, glFrustum, glRotate? 그들은 2.0에서 사라졌습니다. 대신 GPU 자체에서 실행되는 프로그램 (셰이더)을 작성합니다. 정점 위치를 변환하는 역할을하는 셰이더를 "정점 셰이더"라고합니다.

따라서 버텍스 쉐이더는 모든 자동 매트릭스 변환을보다 유연하고 사용자 중심의 계산 시스템으로 대체합니다.

0

Vertex는 렌더링하는 3D 사물의 점을 표현한 것이고 Vertex Shaders는 렌더링하기 전에 Vertex를 일시적으로 수정하는 수단입니다. Vertex Shaders는 비디오 카드 (gpu)에서 실행되므로 여러 작업을 동시에 수행 할 수 있습니다 (예 : 장면의 모든 정점에서 동일한 기능 수행) - 이것은 CPU에서 많은 부담을 덜어줍니다.

1

간단히 말해서 OpenGL ES 1.1은 훨씬 쉽게 들어갈 수 있지만 OpenGL ES 2.0은 훨씬 더 융통성이 있으며 잠재적으로 훨씬 더 빠릅니다. 1.1에서 할 수없는 일이 있습니다.

OpenGL ES 1.1과 2.0은 완전히 호환되지 않으므로 현명하게 선택하십시오.

2.0보다 1.1 배울만큼 많은 자료가 있습니다.

+0

나는 ES 1.1이 훨씬 쉽게 들어가는 것에 동의하지 않습니다. 많은 사람들이 고정 함수 파이프 라인을 사용하기가 더 쉬운 방법에 대해 이야기하지만 실제로는 볼 수 없습니다. 화면에 뭔가를 버리는 것이 분명 쉽지만 화면에 _something_을 던지는 것은 그래픽 프로그래머가하는 것이 아닙니다. 그래픽 프로그래머는 화면에 _ 특정 사항을 던져야합니다. 셰이더는 사용자가 원하는 것을 화면에 놓는 가장 쉬운 방법입니다. –

+0

아마도 셰이더를 배우기 전에 고정 기능을 배웠기 때문에 나는 편향되어 있을지도 모릅니다. 어쨌든 OP로 : 개발자 계정이있는 경우 iOS 5 베타 버전을 살펴보십시오. 나는이 특별한 프레임 워크를 시도하지는 않았지만, 이제는 GLKit이라고하는 뭔가가 있다는 소리를 들었습니다. 이것은 설치를 단순화합니다. (iOS에서 꽤 나쁜 녀석이 될 수도 있습니다. 심지어 GLES2를 사용하면 투시 투영이 쉽지 않습니다. 당신이하는 일을 정말로 알지 못합니다.) 외관상으로는 계기에는 지금 더 나은 OpenGL 디버그 도구가 있습니다. – fzwo

관련 문제