我正在尝试将OpenGL应用程序从旧的固定功能系统切换到使用Vertex Buffer Objects。但是,使用我当前的设置,屏幕上不显示任何内容。我确定我犯了一些简单的错误,但我看不到它。
model
和index
分别为我的vbo和ibo保存ID。缓冲区对象在GLTest::makeModel
方法中设置。我用来存储顶点数据的结构有3个浮点数作为位置,后面跟着4个未签名的颜色。
它创建了三个以三角形排列的顶点,缓冲区对象只包含数字0,1和2.我用一个包含蓝色的QRgb对象调用该方法,所以有了这个设置,我希望看到屏幕上显示蓝色三角形。相反,没有显示任何内容。
显示错误的完整Qt项目here。你需要安装GLEW。
答案 0 :(得分:0)
我从未使用OpenGL的固定管道版本编程,但我在v3.0 +中做了很多工作,所以请仔细考虑我的建议!
您似乎将旧旧混合在一起,例如您没有加载顶点或片段着色器。您的glEnableClientState()
,glMatrixMode()
,glLoadIdentity()
,glVertexPointer()
,glColorPointer()
在现代OpenGL中已被弃用;已被着色器功能取代。
每当我遇到这种事情时,我会使用glGetError()丢弃我的gl调用,你只有一个。