2012-08-31 5 views
1

내가 말하는 플래그는 GL_STREAM_DRAW, GL_STATIC_DRAW 및 GL_DYNAMIC_DRAW입니다. The manual page is clear about when you should use them but ambiguous about what will happen if you do.glBufferData의 힌트 플래그가 실제로 어떤 작업을 수행합니까?

당신이 모두 너무 빨리 대답하기 전에, 나는 그들이해야 할 일을 이해한다고 말하게하고, 그것이 중요한 상황을 상상할 수 있습니다. 그러나 나는 그것이 실천에서 많은 차이를 만든다는 것에 회의적이다. 최근에 나는 플래그를 GL_DYNAMIC_DRAW로 설정하고 잊어 버리는 것이 좋을 것이라고 생각했지만, 그렇게한다면 발에서 스스로를 쏘고 있을지도 모른다는 잔소리가 의심 스럽습니다.

실제로 더 많은 사람을 알고 있습니까 특히 이러한 것들은 무엇을합니까? 특히 STATIC_DRAW와 DYNAMIC_DRAW의 차이점에 대해 가장 궁금합니다. 잘못된 것을 골라서 프레임 률의 죽음의 덫에 걸리거나 그냥 플라시보 야? 실제 답변은 실제 드라이버 구현에 조건부가 될 것이라고 생각합니다. 또는 이러한 플래그가 무언가 (실제로는 무엇이든)를하는 실제 예를 생각해 내면 관심을 보일 것입니다.

+0

참고 : 설명서 페이지가 비참하게 오래되었습니다. 그리고 그것이 OpenGL 2.1이라는 사실을 말하는 것이 아닙니다. [맨 페이지의 관리자는 2.1 페이지의 오류를 수정하지 않을 것이라고 말했습니다.] (http://www.khronos.org/bugzilla/show_bug.cgi?id=464#c1) 그들을 사용하는 것으로부터. –

+0

알아두면 좋지만 지난 몇 년 동안 glBufferData가 많이 바뀌 었다고 생각하지 않습니다. 내가 참조 pdf에 대한 페이지 번호를주는 대신 링크를 게시 할 것이라고 생각했습니다. 매뉴얼 페이지에 대한 더 나은 정보를 알고 있습니까? – Mikola

+0

오류 수정시 관리자의 느린 속도에 지쳤습니다. [전체 내용을 OpenGL Wiki에 업로드했습니다.] (http://www.opengl.org/wiki/Category:Core_API_Reference) 오류가 수정 될 수 있으므로 기다리는 것이 아니라 발견되었습니다. 이것은 * core * OpenGL API 만 공개하고 호환성은 제공하지 않습니다. "공식적인"4.3 핵심 API 참조를 사용하려면 [여기에 있습니다] (http://www.opengl.org/sdk/docs/man4/)를 참조하십시오. 그들이 최신 상태로 유지하지 않으려는 경우 오래된 페이지를 삭제하면 좋을 것입니다. –

답변

3

사용상의 힌트에는 아무런 행동 변경이 없습니다. 그들이 할 수있는 일은 다양한 작업의 성능을 변경하는 것입니다. 그리고 아마 그때조차도. 예 : the usage hints were so misused that AMD effectively ignores them 그들은 당신이 어떻게 사용법 힌트를 기반으로하지 버퍼를 기반으로 주위에 메모리를 이동합니다. NVIDIA의 드라이버는 타협 의지가 훨씬 적습니다.

일반적으로 최대 성능을 위해 사용 힌트를 확인하는 유일한 방법은 프로필입니다. 어떤 힌트를 선택하면 최상의 성능을 얻을 수 있습니다.

+0

재미있는 참고 자료입니다. 조금 비구하지만. STATIC_DRAW와 DYNAMIC_DRAW를 설정하면 어떤 일이 발생하는지에 대해 더 많은 정보가 있습니까? 최적의 구성을 선택하기 위해 프로필을 작성하고 테스트해야 할 필요성을 충분히 이해하고 있으며 플래그가 렌더링 동작을 변경하지 않는다는 것을 알고 있습니다. 그러나 여기에서는 내가 묻는 것이 아닙니다. 하나의 플래그를 다른 플래그보다 우선 선택하고 성능에 어떤 영향을 미치는지 알고 싶다면 내부적으로 어떤 일이 발생하는지 이해하고 싶습니다. (그리고 만약 그 포스트가 믿을 만하다면 적어도 2010 년에는 AMD 하드웨어가 아닌 것처럼 보입니다 ...) – Mikola

+0

이것은 플랫폼에 따라 달라질 수 있습니다. 내가 이야기 한 Apple 엔지니어는 'GL_STATIC_DRAW'로 특정 최적화를 사용하는 iOS 기기에 대해 분명히 알고 있으며, 이는 내 애플리케이션에서 본 내용에 반영된 것 같습니다. 이 확장 기능은 iOS 용 OpenGL ES 프로그래밍 가이드에서 자세히 설명합니다. http://developer.apple.com/library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/VertexData를 사용하여 작업하기/VertexData.html#//apple_ref/doc를 사용하여 작업하기/uid/TP40008793-CH107-SW5 –

+0

@BradLarson : 다시 한번 알고 있습니다.성능이 현저한데 이러한 최적화는 어떻게됩니까? 많은 업데이트를 발행하거나 더 많은 메모리를 사용하면 속도가 느려 집니까? 어떤 생각이 일어나고 있습니까? – Mikola

관련 문제