1
gdgoldlion 2014-12-23 14:14:17 +08:00 1
学习游戏开发和学习OpenGL ES是不同的两个概念。
楼主说的OpenGL ES,那么应该是想搞移动游戏开发。开发移动游戏只需要用现成的引擎就行,这方面2D的可以用Cocos2d-x,3d的可以用Unity3D,没有必要去学OpenGL ES。 学习OpenGL ES也没有什么好的入门教程。网络上的基本上都很水,没办法谁让OpenGL ES是阉割版呢。倒是OpenGL的教程非常丰富。 如果真有必要学习OpenGL的话,需要同步的了解四块内容 1.若干游戏项目开发经验 2.OpenGL学习主要是学习渲染管线和API 3.熟练运用C/C++ 4.计算机图形学 这四部分内容是相辅相成的。 |
2
anyexxx 2014-12-23 14:23:34 +08:00 1
http://opengl.zilongshanren.com/opengl-tutorial/tut01/zh.html 这个是翻译过的OpenGL教程,看这个就好了
|
3
miniwoodman 2014-12-23 15:34:23 +08:00 1
如果能介绍一下这个 “简单功能” 是什么, 那大家也好根据情况来推荐。想必你的需求比较急,不然就会在网上慢慢搜索查资料。
如果这个功能足够简单那就用OpenGL ES 1.0来实现,那需要学的东西就少很多。 如果复杂的化就需要 ES 2.0了(主要还是指画面效果,包括光照、阴影、辉光、色彩处理等后期处理特效) , ES 2.0 相比 1.0 足够强大,但有更多事情需要自己来做。 |
4
wupher 2014-12-23 18:30:10 +08:00
@gdgoldlion 你的头像是…… John Carmack ?
|
5
gamexg OP @anyexxx Android Opengl es 3 需要Android 4.3 以上版本,而且 google 说 :“A device running Android 4.3 or higher may not support the OpenGL ES 3.0 API.”
@miniwoodman 就是画个地球,实在找不到什么好资料了,目前真正看《android 3d游戏开发技术宝典》越来越觉得 opengl es2 反人类,设置一个参数需要好多步,先获得参数索引,然后启用参数,才能设置参数值。而且各种不同的参数类型还用不同名的方法,简直坑死。 |
6
miniwoodman 2014-12-25 14:31:42 +08:00 1
@gamexg 如果只是画一个地球,只要有纹理贴图和光照明暗效果,没有其他特殊效果的要求,就用ES 1.0 / ES 1.1 最容易实现。 ES 1.x 是会长期保留的API, 主要满足基础需求的应用场景。不用考虑兼容的问题。
在ES 2.0 上面哪怕想姚实现 1.0 上基本光照和贴图的效果,也需要做很多工作,2.0 不如 1.0 那么立竿见影, 其中会有很多挫折 / 坑。 如果确实想用2.0 实现, 又很急, 那还是找个现成的、有光照和贴图的示例 稍微改动一下 来的快。 ES 3.0 和 2.0 没差太多, 更多的是对2.0的一些扩展, 2.0的程序 几乎不用做什么改动就可以拿到3.0上用。 3.0不仅需要 Android 4.3还需要GPU厂商的驱动支持,新出的GPU基本都支持了, 但还是不如 2.0 普及。 ------------------------------------------------------------------------- 如果用ES 1.0 实现,具体点: 结合这篇对Texture 纹理的介绍 http://www.jayway.com/2010/12/30/opengl-es-tutorial-for-android-part-vi-textures/ 可以把这个拿来改动一下 http://ruibm.com/2009/11/04/opengl-es-1-0-on-android/ 显示绘制环境设置代码部分都是固定的,如果不想深坑不用特别理解掌握 只要关注 gl.glDrawElements 和纹理相关的API调用就行。 还有矩阵注意一下,设置不好会白屏/黑屏。 只要学会显示一个带纹理的三角形就能显示一个带纹理的地球。 地球的 3D 数据可以从 3D美工软件中导出来,保存为.OBJ格式,与贴图文件一同放到 assets 资源文件夹中从程序读取,因为.OBJ格式最简单,是纯文本格式的,一行一个元素 Vertex / Normal / Face /,很容易读取。 另外对于 地球, 为了避免 贴图坐标冲突(地图边缘首尾相接处 同一个 Vertex 有 两个 UV Texture Coord), 可以在3D软件中将地球做好之后,沿着贴图接缝处 分离为两个独立物体(不移动,只分离)再导出来, 这样显示起来仍然像一个完成的地球,却没有贴图错乱的问题。这块如果不熟我给你弄。 |
7
miniwoodman 2014-12-25 14:48:32 +08:00 1
我当时实现学这些的时候也是在网上东看看西看看,包括纸质书的一些内容, 也没找到一本通俗易懂又深刻权威的 一站式 3D CG编程秘籍。 其实权威的倒是不少,大家手里也都有, 但都需要安下心来慢慢看, 所以没什么好推荐的~~
|
8
gamexg OP @miniwoodman 照着书本上面的例子改了一个出来,大体功能已经实现了。非常感谢。
|