재미있는 수학

Menu

vbo 예제

다음 코드는 정점 좌표에 대해 단일 VBO를 만드는 예입니다. VBO에 데이터를 복사한 후 응용 프로그램에서 정점 배열에 대한 메모리 할당을 삭제할 수 있습니다. VAOs는 정점 데이터와 해당 특성을 “미리 정의”하는 방법을 제공합니다. 렌더링하는 데 필요한 상태를 보유하는 “개체”를 만드는 것과 같습니다. 이 예제에서는 두 개의 VAOs가 만들어지며 하나는 축에, 다른 하나는 피라미드용입니다. VAO를 정의하는 코드는 VPO를 사용하여 렌더링하는 것과 동일합니다. 버퍼를 바인딩하고, 버퍼에 데이터를 복사하고, 렌더링 중에 제네릭 정점 특성을 만드는 대신 이러한 단계는 VAO에서 “정의”됩니다. OpenGL-Then 및 Now에 게시된 것처럼 렌더링의 패러다임 전환이 있었습니다. 이것은 “다음”(즉각적인 모드, 고정 펑톤 파이프라인)에서 “지금”(유지 모드, 프로그래밍 가능한 파이프라인)으로의 전환을 포괄적으로 살펴봅니다. 간단한 예제는 레거시 접근 방식에서 현재 패러다임으로 점진적으로 전환됩니다. 대상은 이 버퍼 개체가 정점 배열 데이터 또는 인덱스 배열 데이터를 저장할지 여부를 VBO에 알리는 힌트입니다: GL_ARRAY_BUFFER 또는 GL_ELEMENT_ARRAY_BUFFER.

정점 좌표, 텍스처 좌표, 법선 및 색상 구성 요소 배열과 같은 모든 정점 특성은 GL_ARRAY_BUFFER를 사용해야 합니다. glDraw[범위]요소()에 사용되는 인덱스 배열은 GL_ELEMENT_ARRAY_BUFFER와 연결되어야 합니다. 이 대상 플래그는 VBO가 버퍼 개체의 가장 효율적인 위치를 결정하는 데 도움이 됩니다(예: 일부 시스템은 AGP 또는 시스템 메모리의 인덱스와 비디오 메모리의 정점을 선호할 수 있습니다.) 또한, 개념에 초점을 맞추기 위해 필요한 API 호출을 시퀀스로 유지하는 예제입니다. 성능에 최적화되지 않았습니다. 예제 코드는 https://github.com/cognitivewaves/OpenGL-Render GitHub에서 액세스할 수 있습니다. 정점 버퍼 오브젝트(VBO)는 정점에 대한 정보를 보유하도록 설계된 비디오 카드의 고속 메모리에 있는 메모리 버퍼입니다. 이 예제에서는 정점의 좌표를 설명하는 VPO와 각 정점과 연관된 색상을 설명하는 VPO가 두 개 있습니다.

No categories

Comments

Sorry, comments are closed for this item.