2017-10-02 3 views
0

그래서 저는 한 프로그램에서 다른 프로그램으로 바꾸고 있습니다. 왜 그런지 모르지만 GL_QUADS가 더 이상 같은 코드로 표시되지 않습니다. 왜 오래된 코드가 작동하지 않는지 파악하기 위해이 새로운 간단한 코드를 만들었지 만 여전히 작동하지 않습니다.GL_TRIANGLES는 작동하지만 GL_QUADS는 아무 것도 표시하지 않습니다.

셋업 :

vector <vec3f> squarepoints; 
vec3f temper(-0.5f, 0.5f, 0.5f); 
squarepoints.push_back(temper); 
temper.x += 1.0f; 
squarepoints.push_back(temper); 
temper.y -= 1.0f; 
squarepoints.push_back(temper); 
temper.x -= 1.0f; 
squarepoints.push_back(temper); 
vector <unsigned int> squareindex; 
squareindex.push_back(0); 
squareindex.push_back(1); 
squareindex.push_back(2); 
//squareindex.push_back(0); 
//squareindex.push_back(2); 
squareindex.push_back(3); 
GLuint VAOO; 
GLuint IBOO; 
GLuint VBOO; 


glGenVertexArrays(1, &VAOO); 
glBindVertexArray(VAOO); 

glGenBuffers(1, &VBOO); 
glBindBuffer(GL_ARRAY_BUFFER, VBOO); 
glBufferData(GL_ARRAY_BUFFER, sizeof(vec3f) * squarepoints.size(), &squarepoints[0], GL_STATIC_DRAW); 
glEnableVertexAttribArray(0); 
glVertexAttribPointer(0, 3, GL_FLOAT,GL_FALSE, 0, 0);  


glGenBuffers(1, &IBOO); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBOO); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int) * squareindex.size(), &squareindex[0], GL_STATIC_DRAW); 
glBindVertexArray(0); 

그림은 : ​​

glBindVertexArray(VAOO); 
    glDrawElements(GL_QUADS, squareindex.size(), GL_UNSIGNED_INT, 0); 
    glBindVertexArray(0); 

이 아무것도 표시되지 않습니다. 이제 설정에서 주석 처리 된 두 줄을 추가하여 6 포인트로 만들고 도면의 GL_TRIANGLES로 변경하면 모두 완벽하게 표시됩니다. 나는 여기서 결함이 어디에 있는지 확실하지 않지만 내 모델 로딩과 다른 기능들을 너무 오랫동안 고쳐서이 지점에서 아주 명백한 것을 간과 할 것이라고 확신한다.

+4

어떤 OpenGL 버전을 타겟팅하고 있습니까? 핵심 프로파일에는 'GL_QUADS'가 없습니다. – BDL

답변

관련 문제