100分,有关OpenGL光照条件下的透视问题,有请大侠们。

123xie 2004-04-14 11:14:47
为什么在光照条件下 glColor(r,g,b,a)中a 无法实现透视呢? 反而设置材质漫反射色的
GLfloat mat_diffuse[] = {r,g,b,a}
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); 中 a(0~1) 却能影响整个图形的透视效果?

我的环境条件设置为;
1、一个光源。 2、光源特性设置://环境光色//漫反射光//镜面反射光 统统设置为(1,1,1,1)
3、材质特性设置://环境光色{ 0.3f, 0.3f, 0.3f, 1.0f }, //漫反射色 {0.3f, 0.3f, 0.3f, 0.5f };(能实现0.5的透明度),

需要实现透视操作时:glEnable(GL_BLEND);glDepthMask(GL_TRUE);
否则:
glDisable(GL_BLEND); //关闭融合处理
glDepthMask(GL_TRUE); //激活对深度缓存的写操作

现在需要对图形的不同构件分别实现不通程度的透明度,我该如何处理呢?

...全文
111 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
syy64 2004-07-09
  • 打赏
  • 举报
回复
设置颜色要与具体建模型联系起来。
alphapaopao 2004-07-09
  • 打赏
  • 举报
回复
你要的是 alpha blend 效果。

1、设置带有 alpha 通道数据的颜色。material_ambient、material_diffuse、material_specular都是四个分量的,前三个是RGB,最后一个是ALPHA。
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material_ambient);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material_diffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material_specular);

2、启用 blend
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
123xie 2004-07-08
  • 打赏
  • 举报
回复
最后定一次了,要抢分的上啊
123xie 2004-06-17
  • 打赏
  • 举报
回复
楼上兄台, glLightModeli()没有这个参数啊,你是不是看错了。
baozi3026 2004-06-14
  • 打赏
  • 举报
回复
上面说错了,应是:
glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);
baozi3026 2004-06-14
  • 打赏
  • 举报
回复
glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular);
PiggyXP 2004-05-07
  • 打赏
  • 举报
回复
不懂,友情up
alphapaopao 2004-05-07
  • 打赏
  • 举报
回复
可以透视。设定color 中的alpha值就行。
123xie 2004-05-07
  • 打赏
  • 举报
回复

有做过OPENGL在光照条件下,设置透明度的吗?


UP 者有分
asett1 2004-04-27
  • 打赏
  • 举报
回复
根据位置关系分别建模啊 然后设定不同的颜色

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧