c++ - C++ OpenGL 中定位光和直射光的区别?

标签 c++ opengl 3d lighting

我刚刚在 videotutorialsrock.com 上做了一个关于 C++ OpenGL 照明的教程。我了解环境光,但不了解定位光和直射光之间的区别,因为两者的想法和代码看起来非常相似。这是我的定位灯代码:

//Add positioned light
GLfloat lightColor0[] = {.6, .6, .6, 1};
GLfloat lightPos0[] = {4, 0, 8, 1};
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor0);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos0);

对于定向光:

//Add direct light
GLfloat lightColor1[] = {.5, .2, .2, 1};
GLfloat lightPos1[] = {-1, .5, .5, 0};
glLightfv(GL_LIGHT1, GL_DIFFUSE, lightColor1);
glLightfv(GL_LIGHT1, GL_POSITION, lightPos1);

谁能解释一下?

最佳答案

在方向上,光仅来自一个方向,而点光源则从它向各个方向辐射光。

定向光可以用来模拟远的点光,例如照在地球上的太阳。

http://www.okino.com/new/toolkit/image22.gif (图片来自 okino.com)

关于c++ - C++ OpenGL 中定位光和直射光的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16406861/

相关文章:

objective-c - iOS、iSGL3D 和立方体

c++ - 使用 std::cout 一次而不是多次显示相同数量的数据是否更有效?

c++ - 使用谷歌模拟模拟转换运算符 int()

c++ - 无法以标准用户身份创建或写入文件

java - GLFWKeyCallback 类型的 free() 方法未定义

javascript - THREE.JS 包含相同对象的多个组

c++ - 我怎么知道哪些选项从 CMake 传递给 GCC?

objective-c - 将视频帧绘制为 GL_TEXTURE_RECTANGLE_EXT 或 GL_TEXTURE_2D

opengl - 使用 Z 缓冲区与根据深度确定像素优先级的优点

python - 垂直填充 3d matplotlib 图