在2D引擎圖底層進行圖形模組分析(轉)
在2D引擎圖底層進行圖形模組分析(轉)[@more@] 想當年,當我開始研究DirectDraw的時候,網上的資料實在是太有限了,在那個沒有google的年代裡面找到適合自己的文章真的像是在撈針一樣.而當我找到了合適的資料,寫出了第一個控制圖片元素在螢幕上移動的時候,我不禁想到了這樣一個問題:如果遊戲中每一個元素都需要自己寫程式碼把BMP或者JPG檔案載入頁面,然後再手工BLT到主頁面上去,那麼把一個遊戲全部載入記憶體顯示出來就足夠把你累的半死了. 而當我思考如何解決這個問題的時候,我已經沒有時間了,我不得不整理我的行裝到大學軍訓去了.不過這個問題一直遺留了下來.如何管理圖形資源才可以夠方便,而且可以把更多的心思放在遊戲設計上面. 起初我想到的是一個功能複雜的圖片類,在需要使用圖片的時候生成一個然後載入圖片,並且在適當的時候渲染它自己.我本以為這個是一個不錯的方法,一直到寫LAZYMAN2.0的2D部分的時候,我不得不考慮這樣的問題,圖片的半透明效果怎麼辦?因為考慮到效率的原因,我必須先渲染沒有半透明效果的圖片,之後再渲染有半透明效果的圖片.而如果不這樣做,渲染的結果就有可能會出錯,而這點是絕對不允許的. 唯一的辦法只有把圖片都統一集中管理,並且把圖片分類,半透明的和不透明的.維持一個顯示列表.這起初讓我覺得很麻煩,因為集中管理的結果就是讀取圖片必須透過這個管理的類(之後我將這個類稱為管理器).而設定圖片的屬性,比如在螢幕上的位置啊什麼的,也都必須透過管理器.而後來我發現這樣的結果是讓程式碼變的規範了,在寫程式碼的時候就考慮了結構上的一些問題,程式碼看起來好看了不少. 2D圖片管理器實現了集中化管理,而使用控制程式碼作為外部對圖片的唯一標識,也使得看起來更像專業的程式碼.這裡的控制程式碼其實只是為了標識出全域性唯一一個圖片的作用,最簡單而有效的辦法是把管理器裡面的那個圖片元素的地址賦值給控制程式碼. 以下的是OniEngine中的部分程式碼 (我之後會拿OniEngine或者Lazyman做為例子,OniEngine只是我作為例子寫的,Lazyman是一個可以用的底層) class OniEngine2D { public: OniEngine2D(); virtual ~OniEngine2D(); // 初始化函式,引數列表裡面相關的引數省略了 bool Init(...); // 外部呼叫的渲染迴圈 bool Render(); // 釋放所有資源 bool Release(); ...... // 載入圖片 HPIC LoadPicture(const char* file); // 設定圖片顯示位置 bool SetPos(HPIC hPic, int x, int y); ...... // 顯示圖片 bool Show(HPIC hPic); // 隱藏圖片 bool Hide(HPIC hPic); // 還有很多其他函式,不一一列舉了,看實際情況新增 }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951976/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 位元組碼底層分析String
- WPF 2D圖形 Shape入門(一)--Shape
- 圖撲 Web 視覺化引擎在模擬分析領域的應用Web視覺化
- Centos7 使用ssh進行x11圖形介面轉發CentOS
- 圖解Janusgraph系列-圖資料底層序列化原始碼分析(Data Serialize)圖解原始碼
- RoadRunner圖層轉換
- 如何在終端介面藉助圖形化工具進行資料分析
- Python基本圖形繪製--模組1:turtle庫的使用Python
- 圖解Go的channel底層原理圖解Go
- 圖計算引擎分析--GridGraph
- 圖計算引擎分析——Gemini
- Hive底層執行引擎的深度剖析(免費)Hive
- 美圖秀秀怎麼摳圖?美圖秀秀對圖片進行圓形摳圖的教程
- 思維導圖 第六組圖形的認識
- 第六組思維導圖——圖形的認識
- 第六組-圖形的認識
- 條形碼設計軟體BarTender實用教程——使用圖層組織物件物件
- canvas 圖形圍繞中心旋轉Canvas
- jmeter學習指南之結果分析-圖形圖表JMeter
- SDL3 入門(4):選擇圖形引擎
- R視覺化09|ggplot2-圖層圖形語法 (1)視覺化
- Ubuntu無法進入圖形介面Ubuntu
- Python學習之Web開發及圖形使用者介面模組!PythonWeb
- RabbitMq底層原理分析MQ
- Python(模組)思維導圖Python
- 使用Leaflet建立地圖模組地圖
- AI框架中圖層IR的分析AI框架
- Java 在Excel中新增分離型餅圖、環形圖JavaExcel
- 使用火焰圖進行Java應用效能分析Java
- 如何基於 echarts 在柱狀圖或條形圖上實現轉換率?(有想法嗎?)Echarts
- Linux效能分析工具與圖形化方法Linux
- BOSHIDA DC/AC電源模組在不同的電源型別之間進行轉換型別
- pip進行模組安裝
- NEC學習 ---- 模組 - 左圖右文圖文列表
- 畫影圖形: SVG & Canvas 圖形對比SVGCanvas
- 箱形圖(python畫圖)Python
- HasMap 底層原始碼分析ASM原始碼
- HashMap的底層原理分析HashMap
- 繪圖和視覺化知識圖譜-《利用Python進行資料分析》繪圖視覺化Python