[GEiv]第一章:静态绘制(三) 转置、尺度变换与混合通道
来源:互联网 发布:三家运营商的网络制式 编辑:程序博客网 时间:2024/06/08 11:29
静态绘制(三)
转置、尺度变换与混合通道
这篇文章主要介绍图元旋转、尺度与混合通道变换。
[转置变换]
图元的转置变换极其简单,使用setAngle(float angle);或setTheta(float theta)即可设置角度变换。该变换满足的是左手定则,以Y轴负向为0点,进行顺时针角度设置。
Angle使用角度制、Theta使用弧度制。
例子:
UESI UES = new R();Obj rect =UES.creatObj(UESI.BGIndex);rect.addGLRect("FFFFFF",0,0,300f,300f);rect.setPosition(CANExPos.POS_CENTER);rect.setAngle(45);//等同于rect.setTheta((float)Math.PI/4);rect.show();
结果:
同样,使用getAngle、getTheta可以获得角度变换量,它们包含有图元索引重载。
[尺度变换]
使用setWidth、setHeight可以进行尺度变换,get同上,包含有图元索引重载。
例子:
UESI UES = new R();Obj rect =UES.creatObj(UESI.BGIndex);rect.addGLRect("FFFFFF",0,0,300f,300f);rect.setWidth(500);rect.setHeight(500);rect.show();rect.setPosition(CANExPos.POS_CENTER);rect.setAngle(45);
[通道变换]
使用setAlph(float alpha);进行alph通道变换,alph为0到1的浮点数,越界时会自动截取。您暂时可以简单地将alph理解为透明度。其get方法同上,具备图元索引重载。
你也可以使用setAllAlph将整个图元的通道系数改为指定值。
例子:
UESI UES = new R();Obj rect =UES.creatObj(UESI.BGIndex); rect.addGLRect("FFFF00",0,0,300f,300f);rect.setGLFill(true);rect.setPosition(CANExPos.POS_CENTER); rect.setAngle(45);rect.show(); Obj rect2 =UES.creatObj(UESI.UIIndex);rect2.addGLRect("00FF00",0,0,300f,300f);rect2.setGLFill(true);rect2.setAlph(0.5f);//这里是绿色矩形,其“透明度”为0.5f,也就是“半”透明rect2.setPosition(CANExPos.POS_CENTER);rect2.show();
[混合模式]
-关于alph的进阶理解:
这里是图形学中的概念而非引擎或OPENGL中的知识。这里笔者只能进行粗陋的讲解,具体内容可以搜索“混合模式”。
混合模式,通俗的讲就是两个颜色混合时得出结果颜色的算法。
这个算法的参数包括:两种颜色值、混合因子
其中,混合因子就是alph。
OPENGL常用的混合算法介绍:
1. GL.GL_SRC_ALPHA,GL.GL_ONE_MINUS_SRC_ALPHA:源色乘以alph系数,覆盖色乘1-原色的alph,之后加和得到目的色。也是这个引擎中除去渲染层(XR)采用的默认混色模式,它看起来就像是透明的效果。
2. GL.GL_SRC_ALPHA, GL.GL_ONE:原色乘以alph,加上覆盖色得到目标色,覆盖层越多越接近1,因此,渲染层默认混色模式采用此种方式,在模拟火焰、光效、爆炸等特效时尤为有效。
3. GL.GL_ONE_MINUS_DST_COLOR,GL.GL_ZERO:原色使用覆盖色的补色,覆盖色为0,此时,颜色为覆盖色反色,他可以实现类似底片的效果。
例子:上例稍加改动;
UESI UES = new R();Obj rect = UES.creatObj(UESI.BGIndex);rect.addGLRect("FFFF00",0,0,300f,300f);rect.setGLFill(true);rect.setPosition(CANExPos.POS_CENTER);rect.setAngle(45);rect.show();Obj rect2 = UES.creatObj(UESI.UIIndex);rect2.addGLRect("FFFFFF",0,0,300f,300f);//将颜色改成了白色rect2.setGLFill(true);rect2.setInverseColor(true);//注意这里!rect2.setPosition(CANExPos.POS_CENTER);rect2.show();
结果:
与黄色重叠的部分变为了黄色的反色。
setInverseColor只是将混合模式设置成了GL.GL_ONE_MINUS_DST_COLOR,GL.GL_ZERO;
你也可用通过:
setCustomMixMode(arg0,arg1)来设置自定义混合模式,并通过clearCustomMixModel()方法清除掉自定义混色模式。
[总结]
本节介绍了旋转、尺度变换、混合通道的设置、获取方法。我们能绘制的图形趋向于多样化了。
- [GEiv]第一章:静态绘制(三) 转置、尺度变换与混合通道
- [Geiv]第一章:静态绘制(二) 图元的位置变换
- [GEiv]第一章:静态绘制(一) 图元与基本图形
- opencv 绘制三通道的直方图
- 三通道图像转化为三通道,并将多通道图像混合
- OpenCV 分离颜色通道与多通道图像混合
- 计算与通道混合磨皮
- 【转载】MATLAB与VC++混合编程实现一维小波多尺度分解
- 多维尺度变换
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
- Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
- OpenCV绘制直方图,B G R三通道的
- OpenCV:绘制图像的BGR三通道直方图
- 尺度不变特征变换SIFT
- 尺度不变特征变换SIFT
- java中double四舍五入并设置小数点位数的问题
- office 2013每次打开都需要配置才行进入程序的解决办法
- jrtplib使用笔记
- ObjectARX向导安装路径问题及解决方案
- windows 命令行中使用winrar
- [GEiv]第一章:静态绘制(三) 转置、尺度变换与混合通道
- 线性时间的桶排序介绍与理解(含c源代码)
- 网卡驱动注册到PCI总线这一过程的分析二
- cocostudio ui编辑器的使用----代码部分1
- Linux keepalived与lvs的深入分析
- 分布式和集群的概念
- Nginx配置参数说明
- redis 2.6.9安装报错解决
- 删除链表节点