使用opengl es编写2d游戏的一些说明和技巧
即使是制作2d游戏,在移动设备上也往往使用opengl es绘图接口,来达到较高的绘制效率。这里记录一下我学习opengl es 2d绘图过程中逐渐明白的一些原理与技巧。
opengl 3d贴图的基本流程是:
a.使用3d坐标指定一些描述物体空间位置的顶点(例如一个立方体,或者平面上的一个三角形,指定它们的顶点)
b.给每一个位置坐标指定一个纹理坐标,表示纹理图上的哪个点对应这个位置坐标
c.位置坐标和纹理坐标都提交后,opengl根据这些信息,使用插值、缩放等方式,将纹理图贴到物体上
如果是2d游戏贴图,上述流程不变,只是3d位置坐标变为2d位置坐标,并且2d位置坐标描述的平面图像往往是两个三角形拼成的正方形。这个正方形的四个顶点,再对应到一张矩形的2d游戏素材图片的四个角上。
基本的流程清楚了,剩下的就是一些细节,以及一些2d图形操作技巧在opengl上的对应实现方法。目前我想到的有以下几点
1、坐标系转换
void glViewport(
|
GLint | x, |
GLint | y, | |
GLsizei | width, | |
GLsizei |
height) ;
|
这个函数的数学表达式为
Yw = (Yn + 1) * height 2 + y
void glOrtho(
GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nearVal, GLdouble farVal)
;
2、纹理贴图细节
a.图像出现白边或者图像移动时产生闪烁
我还碰到过图像闪烁的问题。那是在移动一副图片并对图片进行缩放时发生的。我猜测原因是图片位置发生变化后,因为位置变化量和缩放倍数不一致(例如放大两倍,但是一个像素一个像素的移动图片),缩放过程中采样点也相应变化。图像上某些像素点一会采样到纹理图上的亮点,一会采样到暗点,导致闪烁。
3.颜色表
4.缓冲区操作
使用opengl es编写2d游戏的一些说明和技巧相关推荐
- 《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制
本节书摘来异步社区<OpenGL ES 3.x游戏开发(上卷)>一书中的第1章,第1.5节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.6 本章小结
本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.6节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...
- 《OpenGL ES 3.x游戏开发(下卷)》一1.2 顶点数组对象
本节书摘来异步社区<OpenGL ES 3.x游戏开发(下卷)>一书中的第1章,第1.2节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.5节光照的每顶点计算与每片元计算...
本节书摘来自异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.5节光照的每顶点计算与每片元计算,作者 吴亚峰,更多章节内容可以访问云栖社区&q ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...
本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.1节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...
- 《OpenGL ES 3.x游戏开发(上卷)》一2.4 文件I/O
本节书摘来异步社区<OpenGL ES 3.x游戏开发(上卷)>一书中的第2章,第2.4节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 《OpenGL ES 3.x游戏开发(下卷)》一2.4 展翅飞翔的雄鹰
本节书摘来异步社区<OpenGL ES 3.x游戏开发(下卷)>一书中的第2章,第2.4节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- Unity2D--关于2D游戏的切图小技巧
在Unity2D游戏中,在制作过程中有时会使用一些游戏素材来增加游戏的趣性 但在一些裁剪游戏素材的过程中我们会发现,当我们裁剪完之后为他添后Animation后,游戏素材可能会出现上下浮动的现象.举个 ...
- iPhone的OpenGL ES的资源- 18,你必须知道 !
iPhone的OpenGL ES的资源- 18,你必须知道 ! OpenGL ES是编程的iPhone使用的图形API. 如果要创建自己的游戏引擎,从头开始设计一个游戏,或者创造一些其他图形密集型应用 ...
最新文章
- 2.抽取代码(BaseActivity)
- 一文读懂支持向量机SVM(附实现代码、公式)
- Django后台定制
- html图片上下左右滑动,一个支持任意尺寸的图片上下左右滑动效果
- Kafka日志清理之Log Deletion
- Please ensure that adb is correctly located at……问题解决方案
- Java面向对象(5)--类的成员构造器(构造方法)
- jquery 操作日期、星期、元素的追加
- QT新建项目显示项目未配置的原因与解决方案
- 了解Base64编码的原理(js核对)
- ajax中设置请求头和自定义请求头
- python 3维图形库_Python 绘制 3 维以上的高维图
- java语言代码大全_java语言代码大全解析
- 秒杀系统的设计思维导图
- c语言实现fft原理,新手小白一看就会,FFT算法的原理详解
- 苹果搜索广告ASA开户教程
- SSRS 锁定标题栏
- 高德地图插件的简单使用
- QQ音乐sign,jsvmp算法推导
- (USB:VCP+HID复合设备与系统配置)
热门文章
- 更换服务器IP有哪些步骤,如何操作。
- ArcGIS 实验理论基础十五 空间查询
- Unity打包报错 com.android.buil.gradle.internal.tasks.workers$ActionFacade
- 运放参数详细解释与分析
- Android 第三方桌面,怎么请求Widget的android.permission.BIND_APPWIDGET
- 工商银行提前还房贷流程
- 高通平台ITS:sensor_fusion test_sensor_fusion.py Fail
- How to Write a Spelling Corrector代码注释
- 五险一金重要吗?还是趁年轻多赚钱比较重要?
- 驱动程序如何手动卸载与更新