使用opengl es编写2d游戏的一些说明和技巧

本文介绍了使用OpenGL ES进行2D游戏开发的一些关键知识点和常见问题的解决办法,包括坐标系转换、纹理贴图的细节处理,如避免图像白边和闪烁现象,颜色表的应用,以及缓冲区操作等核心概念。通过理解这些技巧,可以提高2D游戏在移动设备上的绘制效率和视觉效果。
摘要由CSDN通过智能技术生成

  即使是制作2d游戏,在移动设备上也往往使用opengl es绘图接口,来达到较高的绘制效率。这里记录一下我学习opengl es 2d绘图过程中逐渐明白的一些原理与技巧。


  opengl 3d贴图的基本流程是:

a.使用3d坐标指定一些描述物体空间位置的顶点(例如一个立方体,或者平面上的一个三角形,指定它们的顶点)

b.给每一个位置坐标指定一个纹理坐标,表示纹理图上的哪个点对应这个位置坐标

c.位置坐标和纹理坐标都提交后,opengl根据这些信息,使用插值、缩放等方式,将纹理图贴到物体上


  如果是2d游戏贴图,上述流程不变,只是3d位置坐标变为2d位置坐标,并且2d位置坐标描述的平面图像往往是两个三角形拼成的正方形。这个正方形的四个顶点,再对应到一张矩形的2d游戏素材图片的四个角上。


  基本的流程清楚了,剩下的就是一些细节,以及一些2d图形操作技巧在opengl上的对应实现方法。目前我想到的有以下几点

1、坐标系转换 2、贴图问题 3、颜色表 4、缓冲区操作

1、坐标系转换

这个坐标系转换指的是如何从opengl坐标系转换到2d游戏常用的左上角为原点的坐标系
opengl从提交位置顶点到在窗口上渲染出像素,使用的坐标系有:物体坐标、视点坐标、裁剪坐标、正规化设备坐标、窗口坐标
  
  a.提交顶点时,使用的是物体坐标。
  b.使用glTranslate\glRotate等函数,可以对物体进行平移和旋转,从物体坐标转换为视点坐标。(2d游戏不涉及旋转的部分,常常直接给物体设置世界坐标,可以说跳过了这一步)。
  c.使用glOrtho\glFrustum等投影变换函数时,从坐标系变换上来说,先根据这两个函数规定的剪切区域及透视方法,进行了剪切透视变换,将3d世界变换到一个矩形管道观察体内。然后再进行正规化,使坐标在3个轴内的范围是(-1,1)
  d.使用glViewPort函数进行视口变换。这步变换中,上一步的正规化坐标(Xn、Yn、Zn),其中Xn、Yn根据glViewPort的参数,可以得到一个相应的屏幕坐标(Xw、Yw)(这个屏幕坐标,opengl规定原点在左下角,向上向右为正方向),Zn坐标则用来进行深度检测相关操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值