簡體   English   中英

GLFW glDrawElements繪制三角形很奇怪

[英]Glfw glDrawElements drawing triangle weird

只運行一次

GLfloat vertices[] = {
    -0.5f, -0.5f,  0.0f,
     0.5f, -0.5f,  0.0f,
     0.5f,  0.5f,  0.0f,
    -0.5f,  0.5f,  0.0f
};

GLuint triangles[] = {0,1,2};

int lengthV = 3; //Number of vertices
int lenfthT = 1; //Number of triangles

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

glGenBuffers(vaoID, &verticesVBOID);
glBindBuffer(GL_ARRAY_BUFFER, verticesVBOID);
glBufferData(GL_ARRAY_BUFFER, lengthV*sizeof(GLfloat)*3, vertices, GL_STATIC_DRAW);

glGenBuffers(vaoID, &trianglesVBOID);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, trianglesVBOID);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, lengthT*sizeof(GLuint)*3, triangles, GL_STATIC_DRAW);

每幀運行一次

glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, verticesVBOID);
glVertexAttribPointer(0, lengthV, GL_FLOAT, GL_FALSE, 0, nullptr);

glUseProgram(program);
//glDrawArrays(GL_TRIANGLES, 0, verticeCount*3);
glDrawElements(GL_TRIANGLES, lengthT,GL_UNSIGNED_INT, nullptr);
glDisableVertexAttribArray(0);

glfwSwapBuffers(window);

當我運行它時,此渲染正確。
當我運行它時,此渲染正確。

當我將頂點數更改為4以嘗試最終渲染四邊形時。

int lengthV = 4;

有時候是這樣的。
有時候是這樣的。
我不明白為什么會這樣,因為我只更改了頂點數。

Ive試圖找到答案,但我找不到。 我已經看過這個人的問題,應用答案后,他的代碼與我的代碼相同。 glDrawElements不顯示

您錯過了解釋glVertexAttribPointer的第二個參數。

size參數指定屬性的組件數(基本上是它獲得的浮點數)。 由於繪制四邊形時每個頂點仍具有vec3(3個浮點),因此不應更改此數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM