windows phone 7 開發日誌(正題一,結構)

來源:互聯網
上載者:User

輕鬆愉快,走馬觀花,YY著未來的榮耀與激情的連續的幾個晚上過去了。

對於XNA4開發的基礎調研工作宣告結束。開創一個功能是一件愉快的事,完善他並填充那些猶如體力活一般的代碼是非常無聊和痛苦的。

程式員,不怕痛苦,十數年如一日堅持在這條戰線上的我,更是其中自虐型的佼佼者。

先來複習一下調研的結論。

一、windows phone 7 將堅持 dotnet 和 XNA,要和第三方原生c++開發說NO。目前微軟流露出的決心無比強大。

是死是活各有評說,到底是有如vista一樣杯具到死,或有如windows 7 一樣涅槃重生。

這不是我要考慮的問題,我看好,我就去做。XNA就成了在windows phone 7 開發圖形應用的唯一選擇。

二、custom shader(windows 平台支援,windows phone 7 平台,不支援)

這個如果真的不支援,windows phone 7 的遊戲機定位將成為一個笑柄,xnaTeam Dev只是說這個功能會有的,我相信微軟也不至於讓這個笑柄一直保持到RC版本。

二.1 custom shader 的build。不支援runtime的build,通過一些不正當手段對Effect的初始化,調用外部程式build effect,可以在windows 平台上實現shader 的runtime build。這個問題是能支援最好,不能支援我也可以預build所有的shader,不過這將變得很不優雅。

二.2 custom shader 的規範。這個很囧,我沒有找到XNA4這部分的文檔,只能拖進content項目裡build一下試試,看報錯,不過目前發現基本符合 fx_2_0的規範,shader model 3.0 ,只是部分渲染狀態的設定不再支援。

二.3 vectex texture,很欣慰,windows 平台正常運轉,用這個方式繪製地形比較高效.

三、模型載入

從fbx匯入檔案很好,什麼都有了,除了動畫。動畫與換裝這個模組需要再開發。

四、文字與IME

對unicode幾乎沒什麼照顧,英文版模擬器還看不出任何IME的跡象。這部分需要再開發

五、XNA本身

好吧,除了contect項目之外,這就是一個dotnet封裝的DX的子集。換句話說,對於開發遊戲來說,還有很長很長的路,XNA還是很偏底層。

六、好訊息

多點觸摸的開發和調試很方便,有一台windows 7多點觸摸相容的輸入裝置就可以。已知的有 多點觸摸繪圖板,hp和dell的幾個支援多點觸摸的平板電腦,taobao上還有一種紅外兩點觸控螢幕,套在顯示器前面就可以。

接下去開始正式的開發,先從建立基本的代碼結構開始。

c#這部分的設計其實是很好的,只需要設定好類和函數、成員的存取層級,就OK了。

不過用這種方法老是讓人有一種代碼亂鬨哄的感覺,我最後比較學習了一下c#的各種方式後,設計如下

把整個引擎(先不自量力的這麼稱呼吧),分為介面和實現兩個部分,介面部分就是單純的interface,實現部分對外不公開。

先清晰的把介面都寫出來,絲毫不吝惜的使用了介面繼承。

在實現部分只使用單繼承實現介面。

然後再clge_system這裡集中所有的介面建立介面

然後在使用部分 Game.Initialize 處初始化 圖形引擎

Game.Update調用情境的Update部分介面。Update我分開成幾個,考慮到多個RT繪製的情況下不會全部Update。先為以後的posteffect和情境效果做好準備。

Game.Draw裡添加上情境的繪製介面。

基本的結構介紹完了,接下去進入一個比較無趣的填充代碼的階段。可能有一段時間看不到大的進展了。

我們的目標是 4096超大地形。分塊支援(塊大小從16*16-128*128)四層貼圖混合。每層貼圖都可以有: diffuse, 高光過濾,normalmap。根據塊的層設定自動產生適合的shader來渲染,地形渲染採用vectex texture方式,CPU指定每塊的lod層級,GPU處理地形高度變換和lod融合。

輸入方面為了完全相容多點觸摸,我設計採用鍵盤和滑鼠類比多點觸摸的方式:

這是一份不完整的實現,僅測試,保證了平台操作的統一性。

滑鼠右鍵和滾輪,對不起,這裡滑鼠只是個觸摸模擬器,我不會對他們做任何支援。

我對將來的遊戲介面設想如下,螢幕上只有左下角有一個按鍵。按住顯示菜單,鬆開就隱藏,需要另一隻手指操作菜單。

在pc上的操作就是按住alt鍵出菜單,鬆開消失,有菜單時用滑鼠左鍵進行操作。

需要多點操作進行的操作有縮放,旋轉。平移用一隻手指即可。縮放旋轉只需要一隻手指保持,移動一隻手指即可。

在pc上縮放旋轉為按住ctrl鍵,螢幕中心被手指按下,介面會給出提示,滑鼠再進行操作就會和螢幕中心這個點一起做多點觸摸判斷。

要想優秀的多點觸摸體驗,換電腦吧^_^

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.