OpenGL 최적화 팁 [닫기]


26

OpenGL을보다 효율적으로 만들려면 어떤 팁이나 요령이 있습니까?

답변:


16

glStart () / glEnd () 대신 VBO를 사용하십시오. 이를 통해 데이터를 GPU 메모리로 전송하는주기가 줄어 듭니다.


7
또한 glBegin 및 glEnd는 이후 개정판에서 더 이상 사용되지 않으므로 버전 3.x 이상에서 완전히 제거되어 작동하지 않습니다. OpenGL 3.x 컨텍스트를 요청하면 해당 컨텍스트를 완전히 사용할 수 없습니다.
Slurps Mad Rips

DirectX는 실제로 이것을 당신에게 강요합니다 glStart()/glEnd().
knight666

@SAHChandler 나는 그것을 몰랐다. 더 이상 사용되지 않는다는 것을 알지 못했습니다.
MrValdez

3
@SAHChandler : 짜증나! glBegin () 및 glEnd ()로 모든 그림을 배웠습니다. 안돼 !!!

8

도구는 약간 다르지만 프로파일, 프로파일, 프로파일의 표준 팁이 여기에도 적용됩니다.

gDEBugger 는 후드 아래에서 무슨 일이 일어나고 있는지 정확하게 볼 수 있도록 도와줍니다. 그래도 비싸다.


2
이제는 무료라고 덧붙이고 싶었습니다.
DMan

8

이것들은 OpenGL에 관한 Apple의 문서 참조에 있지만 모든 작은 도움이 되었습니까? ;)

OpenGL 성능 최적화 : OS X에서 OpenGL 데이터 처리량을 최적화 하는 기본 사항

(이 마지막 것은 샘플 애플리케이션입니다)
정점 최적화

OpenGL 확장에 대해 다루는 주제 (Apple에서도 제공)에 사용할 수있는 비디오가 매우 많습니다. 그중 일부는 OS X에 따라 다르지만 일부는 더 일반화되어 Windows 및 Linux에 적용될 수 있습니다.

여기 에서 비디오를 찾을 수 있습니다 . 그러나 iTunes와 Apple 계정이 있어야 볼 수 있습니다 (그러나 무료입니다! : D).


7

글쎄, 실제로는 실제로하려는 계획에 달려 있지만 기본 사항은 다음과 같습니다.

  • GPU는 배고픈 짐승이지만 CPU는 매우 소중합니다. GPU에 최대한 많이 상쇄하십시오. 현재 OpenCL, CUDA 및 Thrust와 같은 우수한 라이브러리를 사용하여이 작업을 수행 할 수 있습니다.

  • 쉐이더에서 조명을 수행하십시오. 이것은 당신의 정신을 유지하는 데 도움이 될뿐만 아니라 툰 쉐이더와 디퍼 드 라이팅 과 같은 것들을 매우 시원하게 해줍니다 .

  • 입자가 빨라요. OpenGL 포인트 스프라이트를 사용하는 경우에도 마찬가지입니다.


6

상태 변경을 최소화하십시오. 많은 플랫폼에서 각 상태 변경은 잠재적으로 파이프 라인을 비 웁니다. 유사한 항목을 함께 배치하고 상태를 한 번 변경하는 것이 훨씬 좋습니다.


4
glEnable(GL_CULL_FACES);

뒷면 컬링을 적용하는 간단한 하나의 라이너. 폴리곤 수를 줄이는 데 탁월합니다. 또한 폴리 카운트를 줄이기 위해 프러스 텀 / 오 클루 전 컬링을 살펴보십시오.

고려해야 할 또 다른 사항은 벡터 및 쿼터니언 (주로 카메라 회전에 사용)에 대한 SIMD입니다. ASM을 망설이지 않으려면 C에서 SIMD를 처리하기위한 훌륭한 라이브러리 인 libSIMD를 확인하십시오.


4

로컬 변수에 액세스 할 때 glGet *을 사용하지 마십시오 (예 :

  • OpenGL에서 텍스처 크기를 쿼리하지 말고 변수를로드 할 때 저장하십시오
  • 응용 프로그램에서 변경 사항을 저장할 수있을 때 OpenGL에서 선 너비 / 점 크기를 쿼리하지 마십시오

이 전화는 정말 느립니다

내부에서 변경되지 않는 경우 glBegin-glEnd 절 (glColor 또는 glNormal 등) 외부에서 사용하지 않는 항목을 이동하십시오. OpenGL은 상태 머신이며 마지막 값을 사용합니다.


3

OpenGL 명령을 최소화하는 것이 핵심입니다. 따라서 모든 도면 명령을 배치해야합니다. 2D 게임의 경우 Altas Texture를 사용하고 하나의 opengl 명령으로 동일한 텍스처를 공유하는 모든 스프라이트를 그리는 것이 좋습니다.


조심해. 더 적고 더 큰 배치가 유용하지만 대상 플랫폼에 따라 "너무 큰"배치는 성능을 저하시킵니다.
Andreas

3

배치, 배치, 배치 !! (Ab) GPU를 사용하여 각 드로우 콜에서 가능한 한 많이 렌더링하십시오. 게임은 주로 삼각형의 양이 아니라 상태 변화의 양에 의해 제한됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.