我正在使用 Java 和 LWJGL 在 OpenGL 中练习 VBO 的使用(使用本教程,基本上是复制它的代码:http ://www.arcsynthesis.org/gltut/index.html ),现在发生了一些非常奇怪的事情。
我设置了一个窗口,这是我的 render() 函数,在主循环中调用:
public void render() {
FloatBuffer buffer = BufferUtils.createFloatBuffer(3 * 3);
buffer.put(-1);
buffer.put(-1);
buffer.put(0);
buffer.put(0);
buffer.put(1);
buffer.put(0);
buffer.put(1);
buffer.put(-1);
buffer.put(0);
buffer.flip();
int vbo = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, buffer, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, false, 3 * 4, 0);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
}
如您所见,这是一个非常简单的代码,应该绘制一个三角形。但是我在运行 Intel HD 4000 显卡的 Mac OS X Mountain Lion 笔记本电脑上得到的是:
我在 Windows 7 上运行 AMD HD 6850 显卡得到的是:
这是为什么?我真的认为没有理由发生这种情况,两个视频卡都支持 OpenGL 2.0,这就是我正在使用的,对吧?