‘壹’ 如何编程游戏
当下互联网行业发展迅速,与之相关的产业大多发展都很好,游戏设计的前景自然也是相当不错的。一个游戏问世要经历很多环节,剧本设计,原画创作,场景建模,但核心部分还是编程语言开发。
主要学的内容如下:
1.游戏程序设计:C++程序设计入门;基本数据类型和输入输出;流程控制语句;数组、指针和引用、函数;程序结构和书写规;范结构体和联合体、类;继承与多态;异常处理与程序调试。
2.算法与数据结构:算法分析;数据结构;基本算法;STL的概念与使用;静态库与动态库;XML库的使用。
3.Win32程序设计:Windows程序入门;Windows消息;GDI绘图游戏工具与MFC;网络编程基础。
4.游戏数学和智能应用:游戏中的坐标系;矢量、矩阵;几何碰撞;物理模拟;人工智能与寻路算法。
5.2D游戏技术与应用:2D游戏技术概论;游戏地图系统;GUI系统;战斗系统设计;任务系统;优秀的声音引擎BASS;Cocos2D-X引擎;Box2D物理引擎。
互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。
‘贰’ 如何搭建开发OpenGLES的开发环境,包括软件和硬件平台
我用过的环境:
软件平台:Symbian S60 SDK, Carbide C++
硬件平台:Nokia N73 (支持OpenGL ES)
这个肯定能用起来,但是可以比较老了。
‘叁’ OpenGLes2.0 什么是Pbuffer
OpenGLES让崩溃东西Andorid手机做三D用我记些笔记享吧: android OpenGL ES简介 二00一一-陆-三 Android系统使用OpenGL标准接口支持三D图形功能android 三D图形系统java框架本代码两部 本代码主要实现OpenGL接口库Java框架层javax.microedition.khronos.openglesjava标准OpenGL包 android.opengl包提供OpenGL系统Android GUI系统间联系 Android本代码位于frameworks/base/opengl, JNI代码位于frameworks/base/core/com_google_android_gles_jni_GLImpl.cppframeworks/base/core/com_google_android_gles_jni_EGLImpl.cpp java类位于opengl/java/javax/microedition/khronos 本测试代码位于frameworks/base/opengl/tests包括angeles、fillrate等一四测试代码些代码都通终端进行本调用测试(模拟器使用adb shell) OpenGL ES 一.x 固定管线操作支持glVertexPointer()等函数支持GLSL文件ndkGLES目录库文件libGLESv一_CM.so OpenGL ES 二.x 编程管线操作兼容一.x支持固定管线操作例glVertexPointer()等函数支持GLSL(必须用编程)文件ndkGLES二目录库文件libGLESv二.so OpenGL ES习 二0一一-陆-三0 OpenGL定义自数据类型应该坚持使用些OpenGL数据类型保证移植性效率 OpenGL ES 目前支持陆四位数据类型 OpenGL ES 支持三边形 OpenGL ES 支持gl函数glu库都支持 OpenGL ES OpenGL删除功能: 一. glBegin/glEnd 二. glArrayElement 三. 显示列表 四. 求值器 5. 索引色模式 陆. 自定义裁剪平面 漆. glRect 吧. 图像处理(般显卡没FireGL/Quadro显卡) 9. 反馈缓冲 一0. 选择缓冲 一一. 累积缓冲 一二. 边界标志 一三. glPolygonMode 一四. GL_QUADS,GL_QUAD_STRIP,GL_POLYGON 一5. glPushAttrib,glPopAttrib,glPushClientAttrib,glPopClientAttrib 一陆. TEXTURE_一D、TEXTURE_三D、TEXTURE_RECT、TEXTURE_CUBE_MAP 一漆. GL_COMBINE 一吧. 自纹理坐标 一9. 纹理边界 二0. GL_CLAMP、GL_CLAMP_TO_BORDER 二一. 消失纹理代表 二二. 纹理LOD限定 二三. 纹理偏限定 二四. 纹理自压缩、解压缩 二5. glDrawPixels,glPixelTransfer,glPixelZoom 二陆. glReadBuffer,glDrawBuffer,glCopyPixels OpenGL ES 二.0 二0一一-一0-9 二.0一.一兼容 - 二.0使用文件ndkinclude目录GLES二目录gl二.h,gl二ext.h,gl二platform.h一.一使用GLES目录 - 二.0使用库文件ndklib目录libGLESv二.so一.一使用libGLESv一_CM.so - 二.0取消一.一函数例glMatrixModelglLoadIdentity等 OpenGL着色语言(GLSL――OpenGL Shading Language) - 使用二.0必须语言一.一函数都取消 san-angeles NDK OpenGL ES 一.一例程序 二0一二-三-吧 San Angeles查维基网络虚构未概念城市位于南加州电影现源自Los AngelesSan Diego. 该程序演示效观察宏伟城市面镜面建筑倒影城市飞船飞前5、陆观察点且镜每观察点停移 例用NDK(C++)调用OpenGL ES 一.一绘制San Angeles城市基本全部使用NDKJava程序一 用vc二005演示目通跟踪代码解些细节: - jni所.h文件及demo.c,app-win三二.c复制放专门目录改造用OpenGLES(或者干脆删除段绘制代码保证编译通) 首先析Java代码 - DemoActivity.java唯Java文件主要需要列四jni接口: - private static native void nativeInit(); // 初始化 - private static native void nativeResize(int w, int h); - private static native void nativeRender(); // 绘制一帧 - private static native void nativeDone(); 其析C++代码 app-android.c - 首先调用importGLInit()态导入OpenGL库 - 其调用 appInit()内存建立平台关三D象集合建立用数组用类似画圆拔高式产诸三角形 - 每钟周期调用appRender()细节: - prepareFrame(width, height); // 准备OpenGL ES绘制框架其实清空颜色深度缓冲重置投影模型矩阵 - camTrack(); // 算前钟周期镜位置、朝向及焦距等调用gluLookAt实现 - configureLightAndMaterial(); // 设置光源材质 - drawModels(-一); // 先绘制倒影(其实所模型z轴倒画) - 第循环画精致物体 - 第二循环画运物体 - drawGroundPlane(); // 再绘制镜般面绘制前取消光照打混合绘制绘制原状态 - drawModels(一); // 再绘制所模型 - drawFadeQuad(); // 绘制淡框用融合式画遮住整视口二D框融合系数间相
‘肆’ openGL 2.0该怎么安装
完成工具的安装以后,继续在Eclipse中创建一个新的Android项目。项目名称虽然不重要,但是该节将与主要活动有关,因此应认真学习掌握。首先看一段代码:/**新建一个GLSurfaceView对象*/;GLSurfaceView是一个特殊的视图,它为我们管理OpenGL表面并将其绘制到Android视图系统中。它还添加许多可以简化OpenGL使用的功能,包括但并不局限于:它为OpenGL提供一个专用的渲染线程,使主线程得以继续。它支持连续或按需渲染,维护屏幕设置以及OpenGL和底层窗口系统之间的接口。代码如下:@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);mGLSurfaceView=newGLSurfaceView(this);//检测系统是否支持OpenGLES2.=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);=activityManager.getDeviceConfigurationInfo();finalbooleansupportsEs2=configurationInfo.reqGlEsVersion>=0x20000;if(supportsEs2){mGLSurfaceView.setEGLContextClientVersion(2);mGLSurfaceView.setRenderer(newLessonOneRenderer());}else{return;}setContentView(mGLSurfaceView);}在onCreate()方法里面主要是创建OpenGLES2.0上下文以及做一些初始化工作。在onCreate()中,调用超类之后的第一件事情就是创建GLSurfaceView。然后确定系统是否支持OpenGLES2.0。因此,我们需要一个可以与全局系统状态相交互的ActivityManager实例,以及使用这个实例来得到设备配置信息,该信息将通知我们设备是否支持OpenGLES2.0。一旦确定设备是否支持OpenGLES2.0后,就会通知表面视图需要一个与OpenGLES2.0相兼容的视图,然后传递一个自定义渲染。这个渲染将在任何需要调整表面或者绘制一个新的帧的时候被系统调用。我们还通过传递一个不同的渲染来支持OpenGLEs1.x,尽管可能由于APIs的不同,导致我们需要编写不同的代码,但在这一节中,我们将只关注OpenGLES2.0。最后,我们为GLSurfaceView设置内容视图,它通知Android活动内容应该填补OpenGL表面,代码如下:@OverrideprotectedvoidonResume(){super.onResume();mGLSurfaceView.onResume();}@OverrideprotectedvoidonPause(){super.onPause();mGLSurfaceView.onPause();}GLSurfaceView要求我们在任何父Activity的onResume()和onPause()方法被调用的时候调用onResume()和onPause()方法。
‘伍’ opengl 4.3 和 OPENGL ES 3.0差别大么,我有OPENGL 4.3的基础可以不修改地用于OPENGLES3.0 的编程么谢谢
就是不可以
‘陆’ opengl es和cocos2d有什么区别
OpenGL
ES
(OpenGL
for
Embedded
Systems)
是
OpenGL三维图形
API
的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。
OpenGL
ES
是从
OpenGL
裁剪的定制而来的,去除了OPENGL
ES,glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性。经过多年发展,现在主要有两个版本,OpenGL
ES
1.x
针对固定管线硬件的,OpenGL
ES
2.x
针对可编程管线硬件。OpenGL
ES
1.0
是以
OpenGL
1.3
规范为基础的,OpenGL
ES
1.1
是以
OpenGL
1.5
规范为基础的,它们分别又支持
common
和
common
lite两种profile。lite
profile只支持定点实数,而common
profile既支持定点数又支持浮点数。
OpenGL
ES
2.0
则是参照
OpenGL
2.0
规范定义的,common
profile发布于2005-8,引入了对可编程管线的支持。
cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。可以让你在创建自己的多平台游戏时节省很多的时间。
Cocos2D也拥有几个主要版本,包括Cocos2D-iPhone、Cocos2D-X,以及被社区普遍看好的Cocos2D-HTML5和JavaScript
bindings
for
Cocos2D-X。同时也拥有了非常优秀的编辑器(独立编辑器),例如SpriteSheet
Editors、Particle
Editors
、Font
Editors
、
Tilemap
Editors。
另外,2012年发布的CocoStudio工具集是开源游戏引擎Cocos2d-x开发团队官方推出的游戏开发工具,目前已经进入稳定版。CocoStudio吸取了他们自己在游戏制作中的经验,为移动游戏开发者和团队量身定做,旨在降低游戏开发的门槛,提高开发效率,同时也为Cocos2D-X的进一步发展打下基础。
‘柒’ opengl es 2.0 为什么不在ondrawframe 中调用gclear背景颜色就不刷新
一、在Manifest文件中声明使用OpenGL ES
为了能够使用OpenGL ES 2.0 API,你必须在manifest文件中添加以下声明:
[html] view plainprint?
如果你的应用需要使用纹理压缩功能,还要声明设备需要支持什么样的压缩格式:
[html] view plainprint?
更多关于纹理压缩格式的信息,请参阅OpenGL开发人员指南。
二、为OpenGL ES图形创建一个Activity
这个Activity跟任何其他的应用程序中的Activity一样,也有一个用户界面。唯一的区别是在它的布局文件中存放的视图不是TextView、Button和ListView,而是一个GLSurfaceView。
下面的代码演示了使用GLSurfaceView作为主视图的Acitivity的核心代码:
[java] view plainprint? public class OpenGLES20 extends Activity { private GLSurfaceView mGLView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 创建一个GLSurfaceView对象,并将其设置为当前Activity的ContentView mGLView = new MyGLSurfaceView(this); setContentView(mGLView); } } public class OpenGLES20 extends Activity { private GLSurfaceView mGLView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 创建一个GLSurfaceView对象,并将其设置为当前Activity的Cont
‘捌’ android opengles2.0值得学习吗
OpenGLES是一个让人崩溃的东西。在Andorid手机上做3D还就得用它。把我记的一些笔记分享在这里吧:
Android OpenGL ES简介 20011-6-3
Android系统使用OpenGL的标准接口来支持3D图形功能,android 3D图形系统也分为java框架和本地代码两部分。
本地代码主要实现的OpenGL接口的库,在Java框架层,javax.microedition.khronos.opengles是java标准的OpenGL包,
android.opengl包提供了OpenGL系统和Android GUI系统之间的联系。
Android的本地代码位于frameworks/base/opengl下,
JNI代码位于frameworks/base/core/com_google_android_gles_jni_GLImpl.cpp和frameworks/base/core/com_google_android_gles_jni_EGLImpl.cpp,
java类位于opengl/java/javax/microedition/khronos下
本地测试代码位于frameworks/base/opengl/tests。包括angeles、fillrate等14个测试代码,这些代码都可以通过终端进行本地调用测试(模拟器中使用adb shell)。
OpenGL ES 1.x
固定管线操作,支持glVertexPointer()等函数,不支持GLSL。头文件在ndk的GLES目录下,库文件是libGLESv1_CM.so。
OpenGL ES 2.x
可编程管线操作,不兼容1.x,不支持固定管线操作,例如glVertexPointer()等函数。支持GLSL(还必须用这个来编程)。头文件在ndk的GLES2目录下,库文件是libGLESv2.so。
OpenGL ES学习 2011-6-30
OpenGL定义了自己的数据类型。应该坚持使用这些OpenGL的数据类型,从而保证可移植性和效率。
OpenGL ES 目前不支持64位数据类型。
OpenGL ES 只支持三边形。
OpenGL ES 只支持gl开头的函数,glu库都不支持。
OpenGL ES 从 OpenGL中删除的功能:
1. glBegin/glEnd
2. glArrayElement
3. 显示列表
4. 求值器
5. 索引色模式
6. 自定义裁剪平面
7. glRect
8. 图像处理(这个一般显卡也没有,FireGL/Quadro显卡有)
9. 反馈缓冲
10. 选择缓冲
11. 累积缓冲
12. 边界标志
13. glPolygonMode
14. GL_QUADS,GL_QUAD_STRIP,GL_POLYGON
15. glPushAttrib,glPopAttrib,glPushClientAttrib,glPopClientAttrib
16. TEXTURE_1D、TEXTURE_3D、TEXTURE_RECT、TEXTURE_CUBE_MAP
17. GL_COMBINE
18. 自动纹理坐标生成
19. 纹理边界
20. GL_CLAMP、GL_CLAMP_TO_BORDER
21. 消失纹理代表
22. 纹理LOD限定
23. 纹理偏好限定
24. 纹理自动压缩、解压缩
25. glDrawPixels,glPixelTransfer,glPixelZoom
26. glReadBuffer,glDrawBuffer,glCopyPixels
OpenGL ES 2.0 2011-10-9
2.0和1.1不兼容。
- 2.0使用的头文件是ndk的include目录下的GLES2目录,有gl2.h,gl2ext.h,gl2platform.h,而1.1使用的是GLES目录。
- 2.0使用的库文件是ndk的lib目录下的libGLESv2.so,而1.1使用的是libGLESv1_CM.so。
- 2.0中取消了很多1.1函数,例如glMatrixModel和glLoadIdentity等。
OpenGL着色语言(GLSL――OpenGL Shading Language)
- 使用2.0,必须学此语言。因为很多1.1的函数都被取消了。
san-angeles NDK OpenGL ES 1.1的例子程序 2012-3-8
San Angeles,查维基网络,是一个虚构的未来概念城市,位于南加州。常在电影中出现,来源自Los Angeles和San Diego.
该程序的演示效果是,观察一个宏伟的城市,地面是镜面有建筑倒影,城市中有飞船飞过。前后有5、6个观察点,而且镜头在每个观察点不停的移动。
这个例子,用NDK(C++)调用OpenGL ES 1.1来绘制了San Angeles这个城市。基本上全部使用了NDK,Java程序只有1个。
用vc2005演示一下,目的通过跟踪代码了解一些细节。方法是:
- 将jni下所有的.h文件,以及demo.c,app-win32.c复制出来,放在一个专门的目录下,然后改造成用OpenGL的而不是ES的。(或者干脆删除大段的绘制代码,保证编译通过)
首先分析Java代码
- DemoActivity.java,这是唯一的Java文件,它主要需要下列4个jni的接口:
- private static native void nativeInit(); // 初始化
- private static native void nativeResize(int w, int h);
- private static native void nativeRender(); // 绘制1帧
- private static native void nativeDone();
其次分析C++代码 app-android.c
- 首先,调用了importGLInit(),动态导入OpenGL的库。
- 其次,调用了 appInit(),在内存中建立了平台无关的3D对象集合。建立方法是用一个数组,用类似画圆拔高的方式产生诸多三角形。
- 然后,在每个时钟周期中调用appRender(),细节是:
- prepareFrame(width, height); // 准备OpenGL ES绘制框架。其实就是清空颜色和深度缓冲,重置投影和模型矩阵。
- camTrack(); // 算好在当前时钟周期,镜头的位置、朝向及焦距等。然后调用gluLookAt来实现。
- configureLightAndMaterial(); // 设置光源和材质
- drawModels(-1); // 先绘制倒影(其实就是将所有模型z轴倒过来画)
- 第一个循环,是画精致的物体
- 第二个循环,是画运动的物体
- drawGroundPlane(); // 再绘制镜子一般的地面。在绘制前取消光照,打开混合,然后绘制。绘制后还原状态。
- drawModels(1); // 再绘制所有模型
- drawFadeQuad(); // 最后绘制淡出框,用融合的方式画一个遮住整个视口的2D框,融合系数和时间相关。
‘玖’ 如何在Android上使用OpenGL ES 2.0绘制点
FrameBuffer对象的概念可以参见前面文章AndroidOpenGLES开发教程(23):FrameBuffer。简单的和2D图像类比,FrameBuffer如果对应到二维图形环境中,就是一个2D的内存数组空间,缺省情况为屏幕的显存,也可以创建Offscreen内存空间,此时FrameBuffer可以是一个二维数组,数组每个元素代表一个像素颜色。对于三维图形来说,除了需要代表颜色的二维数组(ColorBuffer),还需要深度二维数组(DepthBuffer)或遮罩数组(StencilBuffer),因此在OpenGL中的FrameBuffer为上述ColorBuffer,DepthBuffer,StencilBuffer的集合。如果手机具有GPU,其缺省的FrameBuffer也是3D屏幕显示区域。通过OpenglES扩展支持,应用程序也可以创建内存中的FrameBuffer对象(不用于屏幕显示)。通过这种应用程序创建的FrameBuffer对象,OpenGL应用可以将图像显示输出重新定向到这个非屏幕显示用FrameBuffer对象中,类似于二维图形绘制中常用的Offscreen技术。和缺省的屏幕显示FrameBuffer一样,由应用程序创建的FrameBuffer对象也是由ColorBuffer,DepthBuffer和StencilBuffer(可选)的集合组成。这些Buffer在FrameBuffer对象中可以称为FrameBuffer-attachable图像,FrameBuffer定义了一些接入点(AttachmentPoint)可以用于连接(Attach)这些Buffer数组。OpenGLES定义了两种FrameBuffer-attachable图像,Texture和renderbuffer,简单的可以将Texture理解为Colorbuffer或是2D图像,renderbuffer对应于depthbuffer。