在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在VB中用Paintpicture方法進行圖形處理 (轉)AI
- 急救~進不了圖形介面(轉)
- 圖解Janusgraph系列-圖資料底層序列化原始碼分析(Data Serialize)圖解原始碼
- 美圖秀秀怎麼摳圖?美圖秀秀對圖片進行圓形摳圖的教程
- Centos7 使用ssh進行x11圖形介面轉發CentOS
- 圖解Go的channel底層原理圖解Go
- 圖形、GDI + 和圖表(在網頁上嵌入動態圖形)網頁
- 如何在終端介面藉助圖形化工具進行資料分析
- Hive底層執行引擎的深度剖析(免費)Hive
- 使用JavaScript進行基本圖形操作與處理JavaScript
- WPF 2D圖形 Shape入門(一)--Shape
- 圖計算引擎分析——Gemini
- 圖計算引擎分析--GridGraph
- RoadRunner圖層轉換
- 詳細講解D3D8裡面的2D圖形程式設計(轉)3D程式設計
- SDL3 入門(4):選擇圖形引擎
- RabbitMq底層原理分析MQ
- LinkedHashMap 底層分析HashMap
- Ubuntu無法進入圖形介面Ubuntu
- slub機制徹底圖解分析圖解
- Android中GPU硬體加速控制及其在2D圖形繪製上的侷限AndroidGPU
- jmeter學習指南之結果分析-圖形圖表JMeter
- 圖形使用者介面(轉)
- DirectX 圖形介面指南(2) (轉)
- DirectX 圖形介面指南(4) (轉)
- DirectX 圖形介面指南(3) (轉)
- DirectX 圖形介面指南(5) (轉)
- DirectX 圖形介面指南(6) (轉)
- DirectX 圖形介面指南(7) (轉)
- Linux圖形介面知識-輕鬆更換圖形環境(轉)Linux
- 原始碼推薦:一個使用C#繪製圖形引擎的Framework (轉)原始碼C#Framework
- 帶你走進圖形使用者介面編制 (一) (轉)
- 讓redhat9 自動進入圖形登陸介面(轉)Redhat
- R視覺化09|ggplot2-圖層圖形語法 (1)視覺化
- iOS利用九切片進行切圖,使UI不會變形iOSUI
- Photoshop圖層模式詳解(轉)模式
- 元圖地圖開放平臺-以CAD圖形為底圖的網際網路地圖開放平臺地圖
- AI框架中圖層IR的分析AI框架