·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
您现在的位置:天新网 > 软件开发 > 开发语言 > 汇编
Win32 OpenGL编程(12) 混合及半透明效果
http://www.21tx.com 2009年11月16日 CSDN 九天雁翎

上一页 1 2 3 4

  此例是从原来的2009-10-25\glCullFace改过来的,基本思路是在一个小的三角锥外再画一个大的三角锥,即如下几句:

glPushMatrix();
DrawSmoothColorPyramid(0.5);
DrawSmoothColorPyramid(1);
glPopMatrix();

  除此外,新添的关键代码就是

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_DST_COLOR);

  两句了,分别是开启混合,并将混合的因子设为源混合因子使用RGB+alpha值,目标混合因子颜色即原颜色,并且,我们使用了默认的混合加模式。很简单吧?就两句代码而已。

  另外,特别注意的是,此时我在颜色数组中添加进了alpha参数(原来没有)

static GLfloat fPyramidColors[] = { 0.0, 0.0, 0.0, 0.7,
    1.0, 0.0, 0.0, 0.7,
    0.0, 1.0, 0.0, 0.7,
    0.0, 0.0, 1.0, 0.7};

  此时表示三角锥的颜色alpha值为0.7.

  我们看看实现的半透明效果是怎么样的。

Win32 OpenGL编程(12) 混合及半透明效果

Win32 OpenGL编程(12) 混合及半透明效果

  先看左边的截图,根本看不到小的三角锥,原因很明显,因为外面的三角锥后绘制,将其内部先绘制的小三角锥完全的覆盖掉了,但是右边的截图我们清晰的看到了内部的小三角锥,呵呵,因为我们启用了半透明效果(用混合实现)嘛。

  自从决定以概念的讲解和演示为主后,本系列文章就像原来那样常常力图展示所有参数的概念和效果了,此处对混合的使用可以说是最最简单的了,我甚至都没有去调用glBlendEquation{Separate}函数,但是实际的使用可以相当复杂,各个参数的作用大家就去参考《OpenGL Programming Guide》。

上一篇: Win32 OpenGL编程(13) 隐藏表面消除(深度测试)及雾效果
下一篇: Win32 OpenGL编程(9) 投影变换

上一页 1 2 3 4

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net