【发布时间】:2013-01-30 12:58:06
【问题描述】:
我正在关注this guide,我正在尝试在屏幕上绘制一个四边形。我也看到了源代码,它是一样的,它应该可以工作,但在我的情况下,屏幕上什么都没有显示。我正在使用带有顶点着色器的 OpenGL 2.0,它只是将颜色设置为红色,以使四边形在屏幕上可见。
在 callig 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();
}
问题是屏幕上没有任何东西,我只看到一个黑色的窗口。四边形应该是红色的,因为我在顶点着色器中设置了红色。
【问题讨论】:
-
"使用顶点着色器,将颜色设置为红色" - 然后向我们展示您的顶点和片段着色器。顺便问一下,你确定你的顶点着色器设置了颜色吗?
-
还显示您的其余设置,您可以在其中编译和链接着色器以及所有这些东西。
-
即使我不使用任何着色器并使用 glColor3f 或 GL_COLOR_ARRAY 设置颜色,我也会遇到同样的问题。
标签: c++ glew vertex-buffer opengl-2.0