顶点缓冲区对象未在 SDL 窗口中绘制
Posted
技术标签:
【中文标题】顶点缓冲区对象未在 SDL 窗口中绘制【英文标题】:Vertex Buffer Object not drawing in SDL window 【发布时间】:2010-03-22 19:13:10 【问题描述】:我只是在 Xcode 中使用 opengl SDL 模板,一切运行良好。我删除了 Atlantis 代码,并将主扩展名更改为 .mm,然后在 drawGL 中添加了一些测试代码。此时在drawGL中绘制一个简单的三角形(使用立即模式)会给我一个白色三角形,但是当我添加代码以使用顶点缓冲区对象进行绘制时,我只得到一个黑色窗口。
这是我的 VBO 绘图代码:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity();
GLuint buffer;
float vertices[] =
0.0f, 1.0f, 0.0f,
-1.0f,-1.0f, 0.0f,
1.0f,-1.0f, 0.0f
;
// VBO doesn't work :(
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 9, vertices, GL_STATIC_DRAW);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_VERTEX_ARRAY);
【问题讨论】:
【参考方案1】:您的glVertexPointer()
调用看起来对 VBO 的使用存在疑问。我认为您需要 BUFFER_OFFSET
construct 而不是 vertices
指针。
【讨论】:
以上是关于顶点缓冲区对象未在 SDL 窗口中绘制的主要内容,如果未能解决你的问题,请参考以下文章
如何在带有 Qt 的 OpenGL 中使用顶点缓冲区对象绘制矩形?
我的OpenGL学习进阶之旅介绍顶点缓冲区对象VBO和元素数组缓冲区对象EBO,并对比使用VBO和不使用VBO绘制三角形的效果
OpenGL:尝试使用 VBO(顶点缓冲区对象)绘制线条,它不显示