『壹』 如何編程游戲
當下互聯網行業發展迅速,與之相關的產業大多發展都很好,游戲設計的前景自然也是相當不錯的。一個游戲問世要經歷很多環節,劇本設計,原畫創作,場景建模,但核心部分還是編程語言開發。
主要學的內容如下:
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。