OpenGL,交错的 VBO(顶点、法线和颜色)与光

Posted

技术标签:

【中文标题】OpenGL,交错的 VBO(顶点、法线和颜色)与光【英文标题】:OpenGL, interleaved VBO (vertex, normal and color) with light 【发布时间】:2012-10-04 08:26:00 【问题描述】:

我有一个包含顶点、法线和颜色的交错 VBO。一切正常。

我也想要灯,但如果我启用它,颜色就不再起作用了。

我猜这是因为灯光不适用于 gl.glColor,而是使用颜色材料(也指定了here,第一个问题)

那么,考虑到我需要渲染不超过 10000 个三角形,并且在渲染过程中需要切换 3 次颜色,这是最适合我需求的策略吗?

Ps:我还在用其他 VBO 渲染数百万个三角形(但每个 VBO 只有一个颜色),所以我猜 gl.glBegin 对我来说不是一个有效的选项..

【问题讨论】:

【参考方案1】:

如果您的硬件不支持着色器,您可以使用 glColorMaterial(GL_FRONT, GL_DIFFUSE) 和 glEnable(GL_COLOR_MATERIAL)。

【讨论】:

我试过了,它似乎可以工作,虽然颜色看起来很暗,尤其是白色。着色器呢?我怎么能和他们在一起? (你有一个好的链接吗?) nehe.gamedev.net/article/glsl_an_introduction/25007 类似的东西。 Shader 只是一个 GPU 程序,你可以在其中计算任何你想要的结果颜色。但是,在您的情况下,我猜光线计算得很好,而您的颜色缺陷是光源设置错误的结果。再次检查您的灯光属性。此外,您可能想要添加一些环境光以使一切更亮 - 我认为它应该通过调用 glMaterialf 为 GL_AMBIENT_COLOR 来工作

以上是关于OpenGL,交错的 VBO(顶点、法线和颜色)与光的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL VBO 法线/光照问题

opengl vbo 纹理

opengl交错vbo不渲染到屏幕

opengl es VBO用法 - 无几何渲染

现代 OpenGL:VBO、GLM 和矩阵堆栈

OpenGL 计算法线(四边形)