【问题标题】:Difference between positioned and direct light in C++ OpenGL?C++ OpenGL中定位光和直射光的区别?
【发布时间】:2013-05-06 20:36:13
【问题描述】:

我刚刚在 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);

谁能解释一下?

【问题讨论】:

标签: c++ opengl 3d lighting


【解决方案1】:

在定向中,光只来自一个方向,而点光从它向各个方向辐射光。

定向光可用于模拟非常远处的点光,例如照在地球上的太阳。

(图片来自 okino.com)

【讨论】:

    【解决方案2】:

    位置向量(xyzw)中的不同w。

    GLfloat lightPos0[] = {4, 0, 8, 1};
    w = 1 表示点(3d 位置)

    GLfloat lightPos1[] = {-1, .5, .5, 0};
    w = 0 表示向量(3d 方向)

    https://gamedev.stackexchange.com/questions/14115/do-i-need-the-w-component-in-my-vector-class

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多