내 친구이자 저는 C++과 OpenGL을 사용하는 프로젝트에서 작업하고 있습니다. 우리는 "ModelObject"를위한 C++ 클래스를 만들었고 각 ModelObject는 멤버 변수로 GLuint vao를 가지고 있습니다. 그런 다음 ModelObject를 초기화하는 동안, 우리는glGenVertexArrays가 고유 한 va를 제공하지 않음
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
를 호출하고 초기화 함수의 끝에서 우리는 맥락에서 얻을 수
glBindVertexArray(0);
를 호출합니다. 이제 2 개의 객체, 열차 및 큐브를 렌더링하려고합니다. 그의 머신 (Linux Mint)에서 그들은 둘 다 자신의 텍스처로 멋지게 렌더링하고 객체를 쿼리하여 그들의 va가 각각 1과 2를 반환합니다.
그러나 내 컴퓨터 (MacBook Pro)에서는 두 개체가 모두 큐브로 렌더링됩니다 (하나는 열차의 질감이 있고 다른 하나는 큐브의 질감 임). 그들의 va를 질의하는 것은 0과 0을 반환합니다.
실험으로 우리는 glGenVertexArrays에게 각 ModelObject에 5 개의 vaos를 생성하라고 말했습니다. 결과적으로리스트 0, 1, 918273, 8, 7 (또는 그와 비슷한 것)이 만들어졌고 두 모델 객체에 대해 동일한 목록이되었습니다.
그래서 내가 알 수있는 한 glGenVertexArrays는 a) 0을 유효한 주소로 사용하고 b) glDeleteVertexArray를 호출하지 않아도 각 호출마다 동일한 주소를 생성합니다. 왜 내 컴퓨터에서이 작업을 수행하고 그의 작업을 수행하지 않겠습니까? 어떻게 중지합니까?
gen/bind VAO가 호출 된 후에'glGetError()'가 당신에게 무엇인가를 제공합니까? – genpfault
glGetError()는 Google 검색에 따라 "잘못된 연산"인 1282를 반환합니다. – Nick