- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 openGL 中的台球 table 上制作“聚光灯”。这应该相当简单,但出了点问题,我无法弄清楚是什么。
我有一个类“PoolLight”,我将其用作灯的一种保持类。这是:
#include "PoolLight.h"
#include "Glut/glut.h"
#include "GL/gl.h"
#include "GL/glu.h"
PoolLight::PoolLight() {
}
PoolLight::PoolLight(GLenum lightNumber, GLenum lightType, float red, float green, float blue, bool distant, float posX, float posY, float posZ)
{
this->lightNumber = lightNumber;
this->lightType = lightType;
color[0] = red; color[1] = green; color[2] = blue; color[3] = 1;
position[0] = posX; position[1] = posY; position[2] = posZ; position[3] = (int) (!distant);
glLightfv(lightNumber, lightType, color);
glLightfv(lightNumber, GL_POSITION, position);
enabled(true);
}
PoolLight::~PoolLight(void)
{
}
void PoolLight::setSpotlight(float angle, float attenuation, float dirX, float dirY, float dirZ) {
glLightf(lightNumber, GL_SPOT_EXPONENT, angle);
glLightf(lightNumber, GL_CONSTANT_ATTENUATION, attenuation);
glLightf(lightNumber, GL_LINEAR_ATTENUATION, 0.0f);
glLightf(lightNumber, GL_QUADRATIC_ATTENUATION, 0.0f);
spotDirection[0] = dirX; spotDirection[1] = dirY; spotDirection[2] = dirZ;
glLightfv(lightNumber, GL_SPOT_DIRECTION, spotDirection);
glLightf(lightNumber, GL_SPOT_CUTOFF, 60);
}
void PoolLight::enabled(bool enabled) {
if (enabled) glEnable(lightNumber);
else glDisable(lightNumber);
}
void PoolLight::reposition() {
glLightfv(lightNumber, GL_POSITION, position);
}
在 Display::Init 中,我有这段代码:
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glPointSize(6);
//Lighting
middleSpotlight = PoolLight(GL_LIGHT0, GL_DIFFUSE, .3, .3, 0.15, false, 0, 0, 50);
middleSpotlight.setSpotlight(60, 1, 0, 0, -1);
upperSpotlight = PoolLight(GL_LIGHT1, GL_DIFFUSE, .3, .3, 0.15, false, 0, 45, 50);
upperSpotlight.setSpotlight(60, 1, 0, 0, -1);
lowerSpotlight = PoolLight(GL_LIGHT2, GL_DIFFUSE, .3, .3, 0.15, false, 0, -45, 50);
lowerSpotlight.setSpotlight(60, 1, 0, 0, -1);
但是,即使禁用除中间聚光灯以外的所有灯光,我的场景也会被一种“毛毯”照明均匀照亮。
我觉得我可能遗漏了一些明显的东西,但我就是看不到什么。
最佳答案
这是由于 OpenGL 默认固定函数管线如何实现光照:光照仅在顶点处计算,结果颜色插值到表面上。如果您的整个表格只包含一个大四边形,就会发生这种情况。
方案一:高度 segmentation 网格。
解决方案 2:用逐片段照明着色器替换固定功能照明。
关于c++ - OpenGL 聚光灯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660514/
我正在尝试在 openGL 中的台球 table 上制作“聚光灯”。这应该相当简单,但出了点问题,我无法弄清楚是什么。 我有一个类“PoolLight”,我将其用作灯的一种保持类。这是: #inclu
我在创建漂亮的聚光灯时遇到了一些麻烦。到目前为止,我的光照属性是这样的: /* Spot light */ glEnable(GL_LIGHT1); GLfloat ambientColor[
我正在尝试用 Cg 实现聚光灯效果。 我已经设法做正常的环境和漫射照明。 我了解聚光灯的基本功能(位置、方向、截止角度),但在 Cg 中处理这些仍然让我望而却步。 这就是我计算聚光灯参数的方式: fl
显然,Spotlight 是查找文档的非常有用的资源,因为它能够搜索文档内 的文本以及标题中的文本。然而,这个过程必须需要大量的处理能力和时间。此外,某个文档,比方说 pdf 通常是加密的,如果 Sp
我不知道如何对图像应用数学计算。那么是否有任何现成的库和教程可用于对图像应用效果? 提前致谢。 最佳答案 你可以试试: http://opencv.willowgarage.com/wiki/ 或者这
我是一名优秀的程序员,十分优秀!