programing

정점 배열 객체 이해(glGenVertexArrays)

bestprogram 2023. 10. 29. 19:52

정점 배열 객체 이해(glGenVertexArrays)

VAO(Vertex Array Object)를 생성/생성할 때 다음과 같은 점과 혼동이 있습니다.

glGenVertexArrays(GLsizei n, GLuint *arrays);

그리고.

glBindVertexArray(GLuint);

버퍼 객체를 생성할 수 있고 정점에 대해 설명할 수 있으며 버퍼 객체를 다음과 같이 설명할 수 있기 때문입니다.glVertexAttribPointer그리고.glEnableVertexAttribArrayVAO를 만들지 않고도 말입니다.

버퍼 객체의 데이터를 설명하기 위해 실제로 VAO를 생성할 필요가 없는 경우 OpenGL SuperBible 5ed와 같은 소스에 VBO를 생성할 때 VAO를 생성하기 위한 호출이 포함되는 이유는 무엇입니까?아직 발견하지 못한 더 고급 주제에만 사용되는 건가요, 완전히 혼란스러운 건가요?

또한 VBO에서 위키미디어 항목을 읽을 때 이 질문을 처음 접했는데 샘플 코드에는 다음에 대한 호출이 포함되지 않습니다.glGenVertexArrays()하지만 그들은 여전히 데이터를 설명합니다.glVertexAttribPointer().Wiki VBO 항목 -- 어떤 이유로 VAO가 생성되는 예?

성능 향상.

호스트에서 속성을 설정하려면 많은 수의 API 호출과 구현 내부의 중요한 검증이 필요한 경우가 많습니다.

이 모든 작업을 한 번 수행하고 VAO를 사용하면 해당 작업을 상각할 수 있습니다.

예를 들어, 실제 데이터에 대한 Graham Sellers의 분석을 참조하십시오.

세 개의 VBO가 필요한 객체를 구축한다고 가정합니다(차양을 위한 서로 다른 데이터, 아마도 위치, 정규식 및 일부 화려한 효과 매개변수).이 개체를 그릴 때마다 이 모든 VBO를 바인딩하고 추가 매개 변수를 설정해야 합니다.VAO를 사용하는 경우 (꼭짓점 배열을 바인딩하는) 호출 하나만 사용하면 특정 개체에 대한 전체 환경이 설정됩니다.

그 답은 당신이 생각했던 것만큼 어렵지 않습니다.재미있는 비유라고 생각해보세요.VertexArrayObject사장이고 여러명의 직원들을 관리합니다.VetexBufferObjects.

언급URL : https://stackoverflow.com/questions/5970087/understanding-vertex-array-objects-glgenvertexarrays