- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个模型需要在聚光灯/平行光下,
意思是,我需要在模式(聚光灯和定向)之间切换。
下面是一些解释的代码:
我可以通过鼠标移动来旋转模型/光源,所以我正在使用
glRotate 和 glTranslate。
一旦用户按下“L”键,我就应该在模式之间切换。
这里是闪电的代码:
void LightBall::projectLight(void)
{
if(LIGHT == _lightMode){
printf("Entering LIGHT mode\n"); <--- Supposed to be a directional light
glDisable(GL_LIGHT1);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_POSITION, _light_position);
}
if(SPOT_LIGHT == _lightMode){
printf("Entering SPOTLIGHT mode\n"); <--- Supposed to be a spotlight
glDisable(GL_LIGHT0);
glEnable(GL_LIGHT1);
glLightfv(GL_LIGHT1, GL_POSITION, _light_position);
glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 10.0);
glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 2.0);
glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,_spotlight_position);
}
}
问题是在它们之间切换时我总是得到相同的灯光模式,
以下是:
另一个例子是在两种灯光模式之间切换后仍然得到相同的灯光
带光源旋转的光源(小球):
我怎样才能得到想要的结果?
这里是 LIGHT0 和 LIGHT1 的定义:
GLfloat light_ambient[] = { 1.0, 0.0, 0.0, 1.0 };
GLfloat light_diffuse[] = { 1.0, 0.0, 0.0, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
_light_position[0] = 0.0;
_light_position[1] = 1.0;
_light_position[2] = 0.0;
_light_position[3] = 0.0;
_spotlight_position[0] = 0.0;
_spotlight_position[1] = -1.0;
_spotlight_position[2] = 0.0;
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular);
谢谢!
最佳答案
GL 灯是定向灯还是聚光灯取决于其位置的 w(第 4 个)分量。如果坐标为 0,则它是定向的。如果非零(通常为 1),则它是聚光灯。在调用 glLightfv(..., GL_POSITION, ...)
之前,您必须相应地修改 _lightPosition
。
关于C++ Opengl - 使用聚光灯照明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893332/
我正在尝试在 openGL 中的台球 table 上制作“聚光灯”。这应该相当简单,但出了点问题,我无法弄清楚是什么。 我有一个类“PoolLight”,我将其用作灯的一种保持类。这是: #inclu
我在创建漂亮的聚光灯时遇到了一些麻烦。到目前为止,我的光照属性是这样的: /* Spot light */ glEnable(GL_LIGHT1); GLfloat ambientColor[
我正在尝试用 Cg 实现聚光灯效果。 我已经设法做正常的环境和漫射照明。 我了解聚光灯的基本功能(位置、方向、截止角度),但在 Cg 中处理这些仍然让我望而却步。 这就是我计算聚光灯参数的方式: fl
显然,Spotlight 是查找文档的非常有用的资源,因为它能够搜索文档内 的文本以及标题中的文本。然而,这个过程必须需要大量的处理能力和时间。此外,某个文档,比方说 pdf 通常是加密的,如果 Sp
我不知道如何对图像应用数学计算。那么是否有任何现成的库和教程可用于对图像应用效果? 提前致谢。 最佳答案 你可以试试: http://opencv.willowgarage.com/wiki/ 或者这
我是一名优秀的程序员,十分优秀!