gpt4 book ai didi

c - Material 着色不起作用

转载 作者:行者123 更新时间:2023-12-02 00:13:43 25 4
gpt4 key购买 nike

我创建了一个房间,实际上是矩形的,有两扇 window 和一扇门。我一直在尝试用 Material 特性点亮 Material 。我使用了下面的代码,但它不起作用;为什么?

注意:正如预期的那样,房间里有灯

在myinit()中

    glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);


glLightfv(GL_LIGHT1, GL_AMBIENT, light[0]);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light[1]);
glLightfv(GL_LIGHT1, GL_SPECULAR,light[2]);
glLightfv(GL_LIGHT1, GL_POSITION,light[3]); // position of the light
glEnable(GL_LIGHT1);

在客厅()

   glMaterialfv ( GL_FRONT, GL_AMBIENT ,material[0] ) ;
glMaterialfv ( GL_FRONT, GL_DIFFUSE ,material[1] ) ;
glMaterialfv ( GL_FRONT, GL_SPECULAR ,material[2] ) ;
glBegin (GL_TRIANGLES);
glColor3f ( /*...*/ )
// ...
glEnd ( ) ;

在主()

   glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);  

最佳答案

您是否启用了照明本身?仅启用一盏灯是不够的,您还应该启用整个灯光系统(默认情况下关闭)

它应该发生在初始化函数中:

glEnable(GL_LIGHTING);

另外,不要忘记:

glEnable(GL_COLOR_MATERIAL);

如果你想要 Material 颜色。 (你现在有了它,但它是另一个可能导致问题的小标志)

为了理解光照在 GL 中的工作原理,必须了解的另一个重要元素是 normals .对于几何体中的每个顶点,您还必须告诉 OpenGL 它面向哪个方向,以便它可以计算其相对于光源位置的方向,以确定它应该有多亮。 This看起来像是对 OpenGL 概念的一个不错的介绍。

当我第一次开始使用 OpenGL 时,我认为这些法线会根据给定的三角形自动计算出来。 我错了。 OpenGL 不会自动计算模型的法线,尽管在​​理论上它可以(尽管结果是 block 状的 - 使用更先进的技术可能会很平滑).

另一个建议 - 最好避免使用固定管道功能,例如 glBegin(...) ... glEnd() block (也称为立即模式)。它过时且缓慢。查看this great tutorial series很好地介绍现代游戏中也使用的现代技术。

关于c - Material 着色不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com