【openGL2021版】创建UI纹理类
大家好,我是Lampard猿奋~
欢迎来到船新的openGL基础系列的博客,今天主要实现的是创建2D的UI纹理类
(1)上周demo回顾
上周我们已经实现了FPS式的摄像机控制,键盘的“WSAD”可以控制摄像头的前后左右移动,鼠标右键可以控制摄像头旋转,并且给demo加了天空盒背景
整个demo看起来就有点像样了,可是一款游戏肯定是有许多UI控件的,以前开发的时候利用引擎封装好的类就很容易创建出一个UI图片,今天尝试利用openGL固定管线的接口封装一个UI的纹理类
(2)创建UI纹理类
其实创建一个图片我们之前是尝试过的,主要就是通过glBegin(GL_QUADS)来绘制一个矩形,在绘制之前绑定好要绘制的纹理ID即可。而我们现在需要做的仅仅是将这些步骤做成通用的。纹理类的成员有一下这些
首先有一个纹理对象记录绑定的纹理,然后提供两个接口分别是SetTexture来设置我们的纹理对象,以及设置我们这个纹理对象展示出来的大小,最后是一个绘制的方法draw
设置纹理对象的接口就不说了,设置展示的纹理大小,主要是通过四个参数纹理的x,y坐标以及展示的宽高来进行换算,把矩形四个点绘制的x,y给计算出来,留待draw时候进行调用
绘制函数中,首先是关闭了灯光以及开启了混合模式GL_BLEND,这样操作的原因是UI控件一般不受光线影响,其次是我们选择的图片有可能有alpha的通道,那么如果不选用混合模式就会把多余的边框显示出来
然后就是把自身的纹理ID绑定到openGL中取,绘制一个矩形。在绘制之前PushMatrix是很有必要的,最后我们看看效果