2013-01-30 11 views
0

나는 한 학기 동안 OpenGL을 사용했지만 다음과 같이 전통적인 방식으로 사용했다 : glBegin ... glEnd.GLSL은 언제 사용해야합니까?

누군가 내가 GLSL이 OpenGL의 미래라고 말한 것을 들었습니다. 전통적인 OpenGL 대신 GLSL을 사용해야할까요?

GLSL이 좋은 GPU에서만 잘 작동하는지 여부?

+1

glBegin/glEnd (직접 모드라고도 함)는 더 이상 사용되지 않습니다. 그래픽 프로그래밍을 처음 시작하는 분이라면 GPU의 프로그래머블 프로세서에서 실행되는 프로그램 인 셰이더 (glsl)로 바로 넘어갈 것을 제안합니다. 역사는 다소 길다. 자세한 내용은 다음을 참조하십시오. http://www.arcsynthesis.org/gltut/History%20of%20Graphics%20Hardware.html 일반적으로 시작하기에 매우 유용한 리소스입니다. http : //www.arcsynthesis .org/gltut/index.html 재미있게 보내십시오. – Aeluned

+0

자세한 안내를 해주셔서 감사합니다! – lightrek

답변

3

GLSL은 OpenGL의 미래가 아니라 프로그래밍의 현재 방식입니다. Aeluned 상태에서 glBegin과 glEnd는 더 이상 사용되지 않습니다 (OpenGL ES에서도 지원되지 않습니다).

좋은 GPU는 무엇을 의미합니까? 인텔 통합 그래픽 카드조차도 쉐이더를 지원합니다. GLSL을 사용하면 GLSL 만 느려지지 않습니다. 무거운 물건을 다룰 때 성능이 저하 될 수 있지만 고정 파이프 라인을 구현하면 동일한 성능을 얻을 수 있다고 생각합니다.

저는 GLSL을 배우는 것이 최선의 방법이라고 말하고 싶습니다.

+1

+1 FFP는 쉐이더보다 훨씬 느립니다. –

+0

나는 당신의 말을 따를 것입니다 – lightrek

4

짧은 대답 : 예, 일반적으로 glBegin/glEnd에서 성능이 좋지 않으며 이전 고정 파이프 동작을 제한하여 수행 할 수있는 작업을 제한하므로 OpenGL 사용을 업데이트해야합니다.

긴 대답 :

두 가지 다른 문제가 혼합되어 있습니다. 그 중 하나는 즉시 모드 (glBegin glVertex ... glEnd 등) 대 일괄 처리 모드 (glVertexPointer 등)입니다. 최신 GPU에서 완벽한 성능을 얻으려면 배치를 사용해야합니다. 이 SO 토론을 참조하십시오 : When are VBOs faster than "simple" OpenGL primitives (glBegin())?.

다른 하나는 고정 파이프와 프로그래밍 가능한 쉐이더 (glEnable 상태 등 ... GLSL)입니다. 많은 경우 성능 문제가 될 수 있지만 더 중요한 것은 유연성 문제입니다. GLSL을 사용하면 사물을 렌더링하는 방법을 훨씬 더 효율적으로 제어 할 수 있으므로 고정 파이프를 사용하여 실제로는 불가능했던 것을 달성 할 수 있습니다. 적어도 사용 가능한 프레임 속도는 아닙니다. 프로그램 가능한 쉐이더는 또한 현대 GPU가 실제로 작동하는 방식을 더 잘 반영합니다. 실제로 고정 파이프를 사용하면 실제로는 쉐이더 아래의 쉐이더로 에뮬레이트됩니다.

+0

고마워요.하지만 한 마디 만 드릴 수 있습니다. – lightrek

+0

@lightrek 아니 prob, 다행스럽게도 도움이되었다 :) –

관련 문제