2014-02-21 83 views
1

我正在使用assimp从文件中加载一些场景/对象,并且我让它们早些时候正确显示 - 但是重写了我的MVP矩阵设置(这已经被写得很糟糕,并且是难以理解的)。顶点缓冲区对象不会渲染,其他图元会

现在,我在标准渲染管道中绘制的大多数原始图像看起来都很好。我在原点周围有一个线框立方体,也可以放置一个三角形。但是不管我做什么,我的ASSIMP加载的对象拒绝渲染,作为线框或实体。

我怀疑我犯的错误非常明显。 I've tried to reduce the code to a minimal example.

该物体应该看起来像一块岩石,它应该显示在线框框内。

由于我没有太多的改变网格代码,我猜这个问题在scene.hmain.cpp

旧版本有GLSL程序,但我在此删除了所有提及的内容。我从OpenGL Superbible的理解是,着色器不是必需的,但。所以那不可能吧?

回答

2

旧版本有GLSL程序,但我在这里删除了所有的提及。我从OpenGL Superbible的理解是,着色器不是必需的,但。

它们是如果你想通过glVertexAttribPointer()使用通用顶点属性。没有着色器OpenGL没有办法知道属性0是一个顶点还是1包含一个纹理坐标。

使用glVertexPointer()和朋友,如果你不想使用着色器。

+0

即使我不准备使用它们,'glVertexPointer()'仍然可以用来存储法线吗?或者我需要使用着色器来处理数据? –

+0

不,'glVertexPointer()'用于顶点位置,而不是法线。 ['glNormalPointer()'](http://www.opengl.org/sdk/docs/man2/xhtml/glNormalPointer.xml)用于正常。如果您不启用'GL_NORMAL_ARRAY' [客户端状态](http://www.opengl.org/sdk/docs/man2/xhtml/glEnableClientState.xml),OpenGL将不会尝试读取任何法线。 – genpfault

相关问题