社区
游戏开发
帖子详情
我在一个立方体中心放置一个点光源,如何让光透过立方体?
houdy
2003-09-14 04:03:42
就是这样的:我为立方体贴了图了,我想在里面放置一个点光源,让光可以透过立方体,就是实现立方体发光的效果!有那位高手知道怎么办?
...全文
166
11
打赏
收藏
我在一个立方体中心放置一个点光源,如何让光透过立方体?
就是这样的:我为立方体贴了图了,我想在里面放置一个点光源,让光可以透过立方体,就是实现立方体发光的效果!有那位高手知道怎么办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
寻开心
2003-09-23
打赏
举报
回复
半透明,贴图还有用的,可以模拟那种光晕效果
pzh508
2003-09-22
打赏
举报
回复
to hahu(网痞 -- 勿近)
要是设置透明了,那还要贴图的干吗?
pzh508
2003-09-22
打赏
举报
回复
to gofree2(天才狐狸)
有了贴图还能显示,无论怎么设置DIFFUSE也没有用啊
寻开心
2003-09-22
打赏
举报
回复
立方体材质设置emission参数,让它自发光,但是不照亮其他的景物。
光源在它的中心,但是光照向外,盒子的面也向外,所以光照对于盒子不起作用,必须用自发光模拟效果,再使用贴图模拟盒子各个面中心亮边界暗的效果就可以了。
gofree2
2003-09-21
打赏
举报
回复
晕~~为什么要这样做呢?修改DIFFUSE值不就行了?! 然后TEX和DIFFUSE MOD一下,就OK了
D3D固定渲染管道的计算灯光也是修改DIFFUSE. ;)
hahu
2003-09-19
打赏
举报
回复
里面的说道透明的部分内容
#include <windows.h> // // Windows的头文件
#include <stdio.h> // 标准输入输出库头文件
#include <gl\gl.h> // OpenGL32库的头文件
#include <gl\glu.h> // GLu32库的头文件
#include <gl\glaux.h> // GLaux库的头文件
HDC hDC=NULL; // 私有GDI设备描述表
HGLRC hRC=NULL; // 永久着色描述表
HWND hWnd=NULL; // 保存我们的窗口句柄
HINSTANCE hInstance; // 保存程序的实例
bool keys[256]; // 用于键盘例程的数组
bool active=TRUE; // 窗口的活动标志,缺省为TRUE
bool fullscreen=TRUE; // 全屏标志缺省设定成全屏模式
bool light; // 光源的开/关 // Lighting ON/OFF
bool blend; // Blending OFF/ON? ( 新增 )
bool lp; // L键按下了么?
bool fp; // F 键按下了么?
bool bp; // B 键按下了么? ( 新增 )
GLfloat xrot; // X 旋转
GLfloat yrot; // Y 旋转
GLfloat xspeed; // X 旋转速度
GLfloat yspeed; // Y 旋转速度
GLfloat z=-5.0f; // 深入屏幕的距离
GLfloat LightAmbient[]= { 0.5f }; // 环境光参数
GLfloat LightDiffuse[]= { 1.0f }; // 漫射光参数
GLfloat LightPosition[]= { 0.0f }; // 光源位置
GLuint filter; // 滤波类型
GLuint texture[3]; // 3种纹理的储存空间
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // WndProc定义
然后往下移动到 LoadGLTextures() 这里。找到" if (TextureImage[0]=LoadBMP("Data/Crate.bmp")) "这一行。我们现在使用有色玻璃纹理来代替上一课中的木箱纹理。
if (TextureImage[0]=LoadBMP("Data/glass.bmp")); // 载入玻璃位图 ( 已修改 )
在InitGL()代码段加入以下两行。第一行以全亮度绘制此物体,并对其进行50%的alpha混合(半透明)。当混合选项打开时,此物体将会产生50%的透明效果。第二行设置所采用的混合类型。
Rui Martins 的补充: alpha通道的值为 0.0意味着物体材质是完全透明的。1.0 则意味着完全不透明。
glColor4f(1.0f,1.0f,1.0f,0.5f); // 全亮度, 50% Alpha 混合( 新增 )
glBlendFunc(GL_SRC_ALPHA,GL_ONE); // 基于源象素alpha通道值的半透明混合函数 ( 新增 )
在接近第七课结尾处的地方找到下面的代码段。
if (keys[VK_LEFT]) //Left方向键按下了么?
{
yspeed-=0.01f; //若是, 减少yspeed
}
接着上面的代码,我们增加如下的代码。这几行监视B键是否按下。如果是的话,计算机检查混合选项是否已经打开。然后将其置为相反的状态。
if (keys['B'] && !bp) // B 健按下且bp为 FALSE么?
{
bp=TRUE; // 若是, bp 设为 TRUE
blend = !blend; // 切换混合选项的 TRUE / FALSE
if(blend) // 混合打开了么?
{
glEnable(GL_BLEND); // 打开混合
glDisable(GL_DEPTH_TEST); // 关闭深度测试
}
else // 否则
{
glDisable(GL_BLEND); // 关闭混合
glEnable(GL_DEPTH_TEST); // 打开深度测试
}
}
if (!keys['B']) // B 键松开了么?
{
bp=FALSE; // 若是, bp设为 FALSE
}
但是怎样才能在使用纹理贴图的时候指定混合时的颜色呢?很简单,在调整贴图模式时,文理贴图的每个象素点的颜色都是由alpha通道参数与当前地象素颜色相乘所得到的。比如,绘制的颜色是 (0.5, 0.6, 0.4),我们会把颜色相乘得到(0.5, 0.6, 0.4, 0.2) (alpha参数在没有指定时,缺省为零)。
就是如此!OpenGL实现Alpha混合的确很简单!
原文注 (11/13/99)
我(NeHe)混色代码进行了修改,以使显示的物体看起来更逼真。同时对源象素和目的象素使用alpha参数来混合,会导致物体的人造痕迹看起来很明显。 会使得物体的背面沿着侧面的地方显得更暗。基本上物体会看起来很怪异。我所用的混色方法也许不是最好的,但的确能够工作。启用光源之后,物体看起来很逼真。感谢Tom提供的原始代码,他采用的混色方法是正确的,但物体看起来并不象所期望的那样吸引人:)
代码所作的再次修改是因为在某些显卡上glDepthMask()函数存在寻址问题。这条命令在某些卡上启用或关闭深度缓冲测试时似乎不是很有效,所以我已经将启用或关闭深度缓冲测试的代码转成老式的glEnable和glDisable。
纹理贴图的Alpha混合
用于纹理贴图的alpha参数可以象颜色一样从问题贴图中读取。方法如下,您需要在载入所需的材质同时取得其的alpha参数。然后在调用glTexImage2D()时使用GL_RGBA的颜色格式
hahu
2003-09-19
打赏
举报
回复
加上了贴图也可以让它透明阿
呵呵,我上星期才开始接触opengl
看到的就是一个可以透明的贴图立方体
是nehe的教程
这里有下载
http://eett.nease.net/soft.html
nonocast
2003-09-19
打赏
举报
回复
BLEND
pzh508
2003-09-15
打赏
举报
回复
帮你UP吧
pzh508
2003-09-15
打赏
举报
回复
你要实现立方体发光,只要用放射光就可以实现,只是你加上贴图比较麻烦。
houdy
2003-09-14
打赏
举报
回复
这么长时间没人顶???
大家快告诉我呀。。
HTML5 CSS3 : 3D
立方体
旋转动画实例源码
代码为博客实例代码:http://blog.csdn.net/lmj623565791/article/details/34120047 有问题博客中留言
【c++】设计
一个
立方体
类Box,它能计算并输出
立方体
的体积和表面积。
设计
一个
立方体
类Box,它能计算并输出
立方体
的体积和表面积。要求: (1)包含成员变量m_a(
立方体
边长)。 (2)包含函数SetA(double a)(设置
立方体
边长)、GetVolume()(计算体积)、GetArea()(计算表面积)...
FFmpeg4.3系列之52:Android OpenGL实现3D画图
FFmpeg系列之52【FFmpeg第四季Android音视频专题之2】Android OpenGL实现3D画图及抛骰子案例实战 我将带领大家来学习Android OpengGL ES实现3D画图:点线面、
立方体
等,及抛骰子案例实战,包括但不限于Android ...
使用Visio画
立方体
使用Visio画斜
立方体
步骤1:
立方体
形似步骤2:
立方体
神似注意 步骤1:
立方体
形似 借助两个矩形绘制
立方体
: 连接棱边: 补全其他线条,去掉原有的两个辅助矩形: 注意,避免出现如下情况: 步骤2:
立方体
神似 ...
matlab怎样画
一个
立方体
,matlab画
立方体
作一
立方体
,使其体积等于单位正 方体的两倍.对边长取不同位数,显示计算结果误差。 H=power(2,1/3); D=1; ......三维重建采用移动
立方体
法(MarchingCubes,MC)算法,对脑部 其中驴上≯。炉土尹;矿亍尹;N---数据集像素...
游戏开发
8,304
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章