C++ OpenGL中定位光和直射光的区别?
Posted
技术标签:
【中文标题】C++ OpenGL中定位光和直射光的区别?【英文标题】:Difference between positioned and direct light in 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);
谁能解释一下?
【问题讨论】:
这有帮助吗? okino.com/new/toolkit/image22.gif 是的,现在知道了。如果您从该评论中做出回答,我会为您接受。谢谢! 【参考方案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
【讨论】:
以上是关于C++ OpenGL中定位光和直射光的区别?的主要内容,如果未能解决你的问题,请参考以下文章