OpenGLut开发入门教程08:混合
系列教程索引:OpenGLut入门索引
本文介绍混合效果。
混合(blend)所谓的混色,就是将当前要绘制的物体的颜色和颜色缓冲区中已经绘制的颜色进行混合,最终决定了当前物体的颜色。
就好像贴窗花一样,我们可以透过窗花透明的部分看到墙里面的东西。
opengl三维世界坐标系为:
- OpenGL坐标系(物体、世界、照相机坐标系)属于右手坐标系
- 设备坐标系使用的是左手坐标系
我们之前开发的代码中一般z轴部分为负值,也就是说,我们看的视角是从z轴的+方向看向-方法。迷雾按照我们看的方向投射在我们绘制的物体上。
首先函数基本的架构是:
在main函数中glut*Func()的参数为回调函数,需要在main函数外独立实现。
重要的是四个回调函数:
- initGL,初始化函数
- reshapeGL,尺寸调整函数,当窗口的尺寸发生变化时调用此函数重新绘图
- keyboard,捕获键盘输入并处理
- displayGL,将想要显示的图像绘制出来的函数
其他函数说明见OpenGL函数功能说明系列。
加载纹理
1 |
|
和上一篇的一样,就是在上一篇的基础上改的。
流程上还是获取数据、创建纹理、绑定纹理、生成纹理。
设置迷雾
在初始化函数中设置混色的颜色。颜色是直接作用在纹理和视角之间,要想实现混合,颜色必须要有透明度即RGBA中的A。而且0表示完全透明,1表示完全不透明,此时混色功能就没用了。
测试用彩色图片,如果混色使用彩色会盖住纹理,所有混色为白色,透明度为50%。
1 |
|
绘制图像
1 |
|
绘图部分和之前的纹理绘图一样。
键盘捕获
1 |
|
要想捕获键盘输入,就得知道键盘输入是什么。
想要捕获什么就在keyboard函数中处理什么。
使用B/b
来控制混合效果是否启动,F/f
控制纹理过滤规则。
未加载纹理效果
加载纹理后
开启混合后
完整源码在OpenGL_Freshman下的OpenGLut的10中。
OpenGLut开发入门教程08:混合
https://feater.top/openglut/opengl-blend