在opengl中创建路灯 我试图用C++在我的环境中创建街灯。我需要为此创建聚光灯,我已经编写了下面的代码,但它不能作为聚光灯工作。我做错了什么,或者你有其他解决我问题的方法吗 GLfloat ambientLight[] = {0.7f, 0.2f, 0.2f, 1.0f}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight); GLfloat directedLight[] = {0.7f, 0.7f, 0.7f, 1.0f}; GLfloat directedLightPos[] = {-10.0f, 15.0f, 20.0f, 0.0f}; glLightfv(GL_LIGHT0, GL_DIFFUSE, directedLight); glLightfv(GL_LIGHT0, GL_POSITION, directedLightPos);
谢谢。如果这是您所有的光代码,那么您缺少了一些重要的行。仅定义环境光/漫反射光颜色和灯光位置在opengl中创建路灯 我试图用C++在我的环境中创建街灯。我需要为此创建聚光灯,我已经编写了下面的代码,但它不能作为聚光灯工作。我做错了什么,或者你有其他解决我问题的方法吗 GLfloat ambientLight[] = {0.7f, 0.2f, 0.2f, 1.0f}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight); GLfloat directedLight[] = {0.7f, 0.7f, 0.7f, 1.0f}; GLfloat directedLightPos[] = {-10.0f, 15.0f, 20.0f, 0.0f}; glLightfv(GL_LIGHT0, GL_DIFFUSE, directedLight); glLightfv(GL_LIGHT0, GL_POSITION, directedLightPos);,c++,opengl,C++,Opengl,谢谢。如果这是您所有的光代码,那么您缺少了一些重要的行。仅定义环境光/漫反射光颜色和灯光位置 您需要使用以下选项启用照明:glEnable(GL\U照明) 您需要启用正在使用的灯光:例如:glEnable(GL\U LIGHT0) 我不确定,但我认为您还需要定义材质() 您需要定义灯光的方向:glLightfv(GL\u LIGHT0,GL\u SPOT\u方向,方向) 其他两项说明: 确保法向量设置正确,否则将看不到结果 如果我没记错的话,固定功能照明只适用于顶点,而不适用于像素。所以,
- 您需要使用以下选项启用照明:
glEnable(GL\U照明)
- 您需要启用正在使用的灯光:例如:
glEnable(GL\U LIGHT0)
- 我不确定,但我认为您还需要定义材质()李>
- 您需要定义灯光的方向:
glLightfv(GL\u LIGHT0,GL\u SPOT\u方向,方向)代码>
- 确保法向量设置正确,否则将看不到结果
- 如果我没记错的话,固定功能照明只适用于顶点,而不适用于像素。所以,如果你有一个光源在一个四边形上方,你将看不到任何光点
同样值得一提的是,那些“旧”的照明功能非常易于使用,并且具有很多教学上的优势。+1。另外:位置上的最后一个元素对于聚光灯必须为非零,GL_SPOT_截止值必须小于90(light0的默认值为180)。感谢您的回答。我编辑了我的代码如下,但环境仍然是黑暗的。我错过了什么?glEnable(德国劳埃德大学照明);glEnable(GL_LIGHT0);GLfloat spotlightcolor[]={1.0,0.0,1.0};GLfloat spotlightDirection[]={0.0,-1.0,0.0};GLfloat directedLightPos[]={100.0f,100.0f,100.0f,10.0f};glLightf(GL_LIGHT0,GL_SPOT_截断,45);glLightfv(GL_LIGHT0,GL_SPOT_方向,spotlightDirection);glLightfv(GLU LIGHT0、GLU位置、directedLightPos);glLightfv(GL_LIGHT0、GL_镜面反射、spotlightcolor);glLightf(GL_LIGHT0,GL_SPOT_指数,120);