gpt4 book ai didi

c++ - VBO : Array not drawn

转载 作者:行者123 更新时间:2023-11-28 00:50:06 26 4
gpt4 key购买 nike

我正在关注 this guide我正在尝试在屏幕上绘制一个四边形。我还看到了源代码,它是一样的,应该可以工作,但在我的例子中,屏幕上没有显示任何内容。我将 OpenGL 2.0 与顶点着色器一起使用,该着色器只是将颜色设置为红色,以使四边形在屏幕上可见。

在调用 glutMainLoop 之前,我生成了顶点缓冲对象:

#include <GL/glut.h>
#include <GL/glew.h>

vector<GLfloat> quad;
GLuint buffer;

void init()
{
// This routine gets called before glutMainLoop(), I omitted all the code
// that has to do with shaders, since it's correct.
glewInit();
quad= vector<GLfloat>{-1,-1,0, 1,-1,0, 1,1,0, -1,1,0};
glGenBuffers(1,&buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER,sizeof(GLfloat)*12,quad.data(),GL_STATIC_DRAW);
}

这是我的渲染例程:

void display()
{
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);

glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER,buffer);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,0);
// I also tried passing quad.data() as last argument, but nothing to do.
glDrawArrays(GL_QUADS,0,12);
glDisableVertexAttribArray(0);

glutSwapBuffers();
}

问题是屏幕上没有绘制任何东西,我只看到一个黑色的窗口。四边形应该是红色的,因为我在顶点着色器中设置了红色。

最佳答案

所以问题可能出在 glDrawArrays(GL_QUADS, 0, 12); 中的计数;必须是 glDrawArrays(GL_QUADS, 0, 4);

关于c++ - VBO : Array not drawn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14604594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com