OpenGL® 정점 버퍼 란 무엇입니까?
OpenGL® (Open Graphics Library®) 정점 버퍼는 종종 정점 배열 및 해당 속성에 매우 빠르게 액세스 할 수있는 그래픽 카드에 직접 위치한 컴퓨터 메모리 영역입니다. 대부분의 경우 OpenGL® 버텍스 버퍼는 버텍스 버퍼 객체 (VBO)를 생성하는 데 사용되어 3D (3D) 장면 내의 객체를 즉각적인 모드가 아닌 표시 목록의 일부로 렌더링 할 수 있습니다. 그러나 때때로 정점 버퍼를 VBO 외부에서 사용하여 객체에 대한 정보를 저장하거나 복잡한 모델에서 변환을 쉽게 수행 할 수 있습니다. 정점 버퍼는 데이터 구조처럼 할당 될 수 있기 때문에 그래픽 카드 메모리에 위치 할 필요가 없습니다. OpenGL® 정점 버퍼를 VBO의 일부로 사용하려는 경우 사용중인 그래픽 카드는 버퍼가 그래픽 메모리에 배치되도록 특수한 OpenGL® VBO 확장을 지원해야합니다.
가장 기본적인 수준에서 OpenGL® 정점 버퍼는 데이터를 저장할 수있는 할당 된 메모리 영역 인 단순한 버퍼입니다. 정점 배열이 저장 될 때 정점 버퍼가됩니다. OpenGL® 정점 배열은 개별 정점의 모든 속성을 정의하는 데이터 구조의 배열입니다. 이 정보에는 3D 장면에서 정점의 X, Y 및 Z 위치, 정점의 색상, 법선 및 기타 속성이 포함될 수 있습니다.
즉각적인 모드 렌더링에서 OpenGL® 명령은 프로그램 내에서 호출 될 때 직접 실행됩니다. 이러한 경우에는 꼭짓점 배열을 가질 필요가 없습니다. 꼭짓점을 배치하고 그리기위한 명령을 하드웨어에 직접 제공 할 수 있기는하지만 심각한 성능 문제가 발생할 수 있습니다. 즉석 모드 렌더링의 경우 3D 객체 또는 모델에 대한 정보를 먼저 정점 배열에 배치해야 OpenGL®이 쉽게 해석 할 수있는 구조를 갖습니다. 그런 다음 해당 배열을 OpenGL® 정점 버퍼라고하는 특수한 메모리 영역에 저장해야합니다.
꼭짓점 버퍼 자체에는 객체를 그리는 데 사용되는 완전한 정보 모음 이외의 특별한 특성이있을 필요는 없습니다. 그러나 OpenGL® 정점 버퍼가 OpenGL 확장을 통해 OpenGL® 정점 버퍼 객체로 변환 될 때, 정점 버퍼에 정의 된 객체의 그리기를 최적화하는 데 도움이되는 일련의 이벤트가 발생합니다. 즉, 버퍼는 OpenGL®이 사용하는 클라이언트-서버 설정의 서버 측에서 그래픽 카드 메모리에 할당되고 저장됩니다. VBO에서 일부 계산을 미리 수행 할 수 있으므로 최대한 빨리 렌더링 할 수 있습니다. VBO 외부에서 일반 정점 버퍼는 일반적으로이 처리를받지 않으며 다른 데이터 유형과 같이 할당 및 사용할 수 있습니다.