青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 72,  comments - 4,  trackbacks - 0
 


stratagus的ai規(guī)則:

stratagus這個高仿war2的程序會分時間段來調(diào)用ai的處理函數(shù)。它的ai規(guī)則主要是用一些ai函數(shù)來定義,
比如說某方電腦可以定義對應(yīng)的ai規(guī)則函數(shù),記得是通過類似aidefine, aineed, aiwait, aiattack的函數(shù)進(jìn)行ai規(guī)則的定義,比如說aineed 兵種 個數(shù),然后aiwait會陰塞直到程序ai處理到達(dá)條件才繼續(xù)執(zhí)行后面的ai規(guī)則函數(shù),這就可以非常方便的定義各種電腦的ai行為,比如說生產(chǎn)出aineed一些農(nóng)民,然后等待,夠出就會aineed兵營之類,等待夠了就aineed多少個兵,aiattack開始嘗試出兵攻擊玩家.

另外這個游戲的迷霧作法是以地圖塊記錄陣營迷霧表,地圖塊的unit進(jìn)出會進(jìn)行刷新,而迷霧簡單地用預(yù)處理好的迷霧圖塊(作法跟地表紋理一樣的)進(jìn)行拼接渲染,這種作法跟當(dāng)前war3的作法基本一致,只是war3的迷霧圖塊是實時更新的,迷霧可以動態(tài)圓滑過渡(在之前一文章分析過了),而這個迷霧圖則只能按格子跳動,不能圓滑漸變。

 

另外存下一下以前的跟蹤流程,以備用。

                          stratagus流程

一。 腳本Start Game按鈕調(diào)用 RunMap(mapname)中執(zhí)行程序中StartMap(map)
二。 程序中CreateGame后GameMainLoop中游戲循環(huán)處理.

//---------------------------------------------------------------------------
一。祥細(xì):
1. 腳本初始:
   程序通過加載stratagus.lua進(jìn)行初始設(shè)置, 并裝載其它腳本,通過
   DefineUnitType(..)來定義各種類型unit的屬性

2. 渲染初始:
   InitVideo()

3. 聲音初始:
   InitSound() && InitMusic()

4. 加載字體:
   LoadFonts()

5. 顯示splash:
   ShowTitleScreens

6. 單位管理器初始:
   UnitManager.Init(); // Units memory management

7. 界面加載:
   PreMenuSetup();     // Load everything needed for menus

8. 界面:
   在MenuLoop()中加載guichan.lua,這會運(yùn)行RunProgramStartMenu() //如果是編輯器則是另一函數(shù)
   創(chuàng)建WarMenu界面,上面Single Player Game按鈕綁定RunSinglePlayerGameMenu()函數(shù),
   響應(yīng)后里面再創(chuàng)建另一個WarMenu界面,并綁定Start Game函數(shù)為
   RunMap(mapname),該函數(shù)會調(diào)用InitGameVariables遍歷調(diào)用初始化函數(shù)表InitFuncs[]()中每個函數(shù).
   最后調(diào)用程序的StartMap(map)游戲開始

//---------------------------------------------------------------------------
二。祥細(xì):
1. CreateGame中:
   a. 迷霧初始
      InitVisionTable
   b. .smp地圖初始:
      執(zhí)行.smp地圖(lua文件來的, 就兩行調(diào)用DefinePlayerTypes()定義PlayerType和PresentMap()函數(shù)設(shè)置地圖信息)
      DefinePlayerTypes("person","nobody","nobody","nobody","nobody","person") //neutral||computer||person||nobody||rescue-passive||rescue-active
      PresentMap("Mysterious Dragon Isle", 2, 128, 128, 1)
   c. 玩家初始:
      遍歷16個玩家進(jìn)行CreatePlayer創(chuàng)建(從Player[]取出), ThisPlayer=Players[NetLocalPlayerNumber];
      應(yīng)用上述b中設(shè)置的PlayerType進(jìn)行team設(shè)置(中立=0,電腦=1,玩家=2+i, PlayerRescuePassive及PlayerRescueActive=2+i,)

   b. InitUnitTypes
     初始type->BuildingRules, type->stats[player](stats->Costs,stats->Variables)

   c. .sms地圖加載:
     執(zhí)行.sms地圖(lua文件來的),其中
用類似以下方法設(shè)置幾個玩家資源等信息(如下第一個參數(shù)0表示玩家號, 本地圖有0-5個玩家)
SetStartView(0, 80, 30)
SetPlayerData(0, "Resources", "gold", 2000)
SetPlayerData(0, "Resources", "wood", 1500)
SetPlayerData(0, "Resources", "oil", 1000)
SetPlayerData(0, "RaceName", "orc")
SetAiType(0, "wc2-air-attack")
SetStartView(1, 0, 0)
SetPlayerData(1, "Resources", "gold", 2000)
...


然后LoadTileModels("scripts/tilesets/wasteland.lua")(這個函數(shù)同等于直接執(zhí)行l(wèi)ua腳本)
在wasteland.lua中執(zhí)行了DefineTileset(...)來設(shè)置一堆地形中各圖塊資源位置
并調(diào)用BuildTilesetTables()程序進(jìn)行處理, 接著調(diào)用 Load("scripts/scripts.lua")這個會據(jù)當(dāng)前玩家的playertype來調(diào)用不同的ui.lua(human/org)


之后是一堆
SetTile(32, 0, 0, 0)
SetTile(35, 1, 0, 0)
...
作用是HP for walls/ Wood Regeneration

最后是通過
unit = CreateUnit("unit-oil-patch", 15, {7, 5})
這個會據(jù)第一個參數(shù)來找到對應(yīng)的type并創(chuàng)建出unit對象,然后刷新unit所處在地塊的UnitFieldFlags用于尋路,
以及MapMarkUnitSight刷新視野, 視野的做法有點怪,他是根據(jù)角色視野來刷新地塊MapField->Visible[屬方]是否可見,
然后再從unit所在位置的地塊的visible[]來刷新unit->visible[屬方],刷新時判斷
上次和今次變化,從而得知unit是不是從屬方player視野中進(jìn)出.


SetResourcesHeld(unit, 20000)
unit = CreateUnit("unit-gold-mine", 15, {66, 6})
SetResourcesHeld(unit, 35000)
...
來創(chuàng)建一些資源

    d.  Map.Init();這個只調(diào)用了InitFogOfWar()

    e. PlayersInitAi()      
       遍歷16方玩家,產(chǎn)生查詢對應(yīng)aitype信息(有aiscript函數(shù))設(shè)置給PlayerAi對象,并將對象綁定給該玩家.
 
    f. InitTriggers()
       用于注冊條件函數(shù)以及要執(zhí)行的函數(shù)。當(dāng)前調(diào)用SinglePlayerTriggers()腳本函數(shù),只注冊了勝利或失敗條件函數(shù)及對應(yīng)執(zhí)行處理函數(shù)

    g. InitPathfinder()


2. GameMainLoop中:


主要是分時段來執(zhí)行ai處理函數(shù)等,具體不寫了。。。


 

posted @ 2011-06-24 16:40 flipcode 閱讀(461) | 評論 (0)編輯 收藏

之前臨時看了下mygui,發(fā)一下跟蹤的信息,以備參考:
一。 創(chuàng)建每個widget, 用所得皮膚進(jìn)行初始化,
一個皮膚可以由子皮膚以及子控件組合成。
1. 創(chuàng)建皮膚對應(yīng)的一個貼圖并創(chuàng)建皮膚下所有子皮膚(存入mSubSkinChildo數(shù)組中, 它們都是使用此相同貼圖),并加到mSubSkinChild以及mDrawItems中。
2. 然后設(shè)置該皮膚對應(yīng)的屬性值。
3. 創(chuàng)建該皮膚所有子控件(存入widget中的mWidgetChildSkin數(shù)組中)

二。將所創(chuàng)建的控件加入到對應(yīng)的layernode中:   
LayerManager::getInstance().attachToLayerNode(_layer, widget);
其中會遍歷widget中所有mDrawItems(子皮膚),加到對應(yīng)的layernode中,
當(dāng)前子皮膚(SubSkin)使用該widget中的mTexture來創(chuàng)建mRenderItem(在layernode中有映射表按textrue來歸類, 其中文字放入mFirstRenderItems,其它放入mSecondRenderItems)
而mRenderItem中也有一個mDrawItems數(shù)組,用來存入SubSkin的. 同時mRenderItem中有mVertexBuffer,當(dāng)渲染時,會遍歷所有mDrawItems,將它們收集到mVertexBuffer中進(jìn)行批次渲染.


三。渲染:
遍歷所有mLayerNodes進(jìn)行渲染
1. 遍歷mFirstRenderItems和mSecondRenderItems中所有RenderItem進(jìn)行渲染
   在RenderItem中遍歷mDrawItems,調(diào)用其doRender()方法,將頂點渲染到mVertexBuffer中.

2. 渲染mChildItems中所有


四。 關(guān)于文字的渲染:
simpletext是一個renderitem

simpletext從edittext中派生
edittext::updateRawData會使用mTextView生成貼圖uv等數(shù)據(jù)
每個RenderItem提供一個vertext buf,供其中的數(shù)據(jù)進(jìn)行填充批次渲染


文字的渲染由于是一次讀入的(老外就是不考慮中文),如果中文修改范圍直接用的話則加載時必定卡。。。
而且中文字多,一般不好全部一次存入貼圖中,只能使用貼圖緩存方式處理。

posted @ 2011-06-24 15:47 flipcode 閱讀(1094) | 評論 (0)編輯 收藏
2d游戲中可以做到局部更新,3d游戲中這種處理已經(jīng)絕跡了,最近還是嘗試弄了下,
3d游戲中界面的局部更新問題

要在3d游戲中使用界面系統(tǒng)的局部更新,需要先準(zhǔn)備一塊畫布,然后界面局部更新時刷新到這塊畫布上,這樣每幀只畫畫布
雖然之前有想過這樣的方法,但一直沒去弄過,最近弄了下,碰到的問題在于使用的帶透明信息的文字渲染上, 如下:
最近有人再次討論了這個問題,為了說明這個問題我又重新整理了下,新整理如下:
3d游戲中界面臟矩形碰到的alpha排序問題:
3d游戲中界面臟矩形碰到的alpha排序問題:
界面是一張半透明底圖,上面畫一些半透明的字,
這里測試我們假設(shè)只用一個顏色分量(值范圍為0-255)
如下:
scene = 100; // 場景,
tex = 150;   // 貼圖
text = 200;  // 文字
a1 = 0.2f;   // 貼圖alpha
a2 = 0.3f;   // 文字alpha

下面對正常渲染方式和臟矩形渲染方式分別測試結(jié)果:
【法一】。正常順序渲染方法:
dest = (scene*(1-a1)+tex*a1)*(1-a2)+text*a2
= (100*0.2+150*0.8)*0.3+200*0.7
=42+140
=182

【法二】。臟矩形的渲染到貼圖方法:
目標(biāo)貼圖rt清為全黑0,alpha為1

1. 先將tex渲染到目標(biāo)貼圖
clr1 = rt*(1-a1)+tex*a1 
     = tex*a1 
     = 30
alpha = a1
      = 0.2f

2. 然后再渲染文字:
clr2 = clr1*(1-a2)+text*a2
     = 30*0.7f+200*0.3f
     = 81
alpha = alpha * a2 
      = 0.2*0.3
      = 0.6

3. 最后將其和場景混合:
dest = scene*(1-alpha) + clr2*alpha
=100*0.4 + 81*0.6
=40+48.6
=88.6
posted @ 2011-06-24 11:51 flipcode 閱讀(267) | 評論 (0)編輯 收藏
最近為公司寫了個性能優(yōu)化曲線工具, 可配置,如圖:


查了下war3場景同屏面數(shù)在4000-10000面左右, 可以看到單機(jī)下war3穩(wěn)定限幀在15到16毫秒(也即60幀左右), 以下是一個簡陋版本載圖:

同時發(fā)現(xiàn)war3的迷霧似乎4格一個16*16像素的動態(tài)圖(樹陰影也動態(tài)做到上面), 例如:64*64大小地圖分成8*8個fog塊,
下圖是我載了些圖手動還原迷霧大致如下:




另外三國的曲線(部分渲染消耗,每一格為1ms, 測試機(jī)器比較爛,是集成顯卡)

另外show下山邊為公司寫的靜態(tài)性能分析工具, 用在cpu的消耗測試還是比較有用的,當(dāng)然渲染消耗由于涉汲runtime/driver的緩存以及gpu處理等原因是測試不準(zhǔn)的.
posted @ 2011-06-24 09:09 flipcode 閱讀(199) | 評論 (0)編輯 收藏
,另外難得今天有空又?jǐn)[弄了下以前寫的地形引擎,順手載一下圖:





posted @ 2011-06-18 19:28 flipcode 閱讀(190) | 評論 (0)編輯 收藏

一。世界分布:
map中最多有64*64個block(即block[4096])
每個block對應(yīng)一個terrain(大小約為533*533)分成16*16個tile(即tile[256], 每個tile大小約為33*33)
最后每個tile分成8*8個CELL(大小為4*4左右),每個CELL中間附帶一個點,用于
在渲染時,如果是在tilelod內(nèi)則這個8*8個cell中間加一個點細(xì)分繪制,否則不用繪制這細(xì)分的三角形.

二。Tile渲染:  
   每個tile最多可存4層地表紋理,
   當(dāng)渲染tile時,看有幾層地表就設(shè)置對應(yīng)的不同層的shader,并賦與對應(yīng)地表貼圖以及對應(yīng)一張alpha map進(jìn)行渲染
   求出地表base位置到角色位置距離,看是否超出tile的lod距離,超出則用粗格子,否則用細(xì)格子進(jìn)行繪制。

posted @ 2010-12-27 09:13 flipcode 閱讀(282) | 評論 (0)編輯 收藏

 

小場景測試:反折射水,實時陰影,高光+泛光,splatting地表




posted @ 2010-12-26 00:11 flipcode 閱讀(158) | 評論 (0)編輯 收藏


男人撐過10秒minigame游戲...,周五晚上一時興致幾個小時弄的測試程序

地表刷:

posted @ 2010-12-16 22:29 flipcode 閱讀(212) | 評論 (0)編輯 收藏

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// UI的渲染:
//         flipcode@msn.com
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

一。批次渲染:
1. 在界面上的3d模型渲染及特效需要每幀渲染到貼圖上再當(dāng)UI來畫,否則將會打亂渲染狀態(tài)

2. 控件及文字按渲染順序生成z值,然后將不透明的按貼圖打包,先批次畫不透明的控件和文字,再關(guān)掉z write按排序畫非透明控件和文字.
   優(yōu)化方案:
      由于透明的控件和文字很可能沒法批次畫(除非它們順序畫時都在同一貼圖上),所以約定所有控件和文字只用alpha test方式
   而不能用alpha blend方式,也就是說控件和文字只能用colorkey(為了效率忍痛去掉類freetype用alpha blend產(chǎn)生的一些自然過渡的效果)
   并且盡量讓所有控件所用圖片都作成一兩張圖上。(文字則是程序為每種字體創(chuàng)建大概兩張貼圖cache, 并先緩存一些最常用的字)
 
二。去掉UI重疊部份的渲染:
1. 合并所有控件矩形ui_rect為一個全局多邊形集g_merge_rgn(并集)

2. 從上往下順序?qū)⑺锌丶匦蝩i_rect與g_merge_rgn分別作交集測試, 成功則將交集存回UI控件ui_render_rect_rgn,
   并且如果控件為非透明(控件已在上述“批次渲染”約定為非透明但可有colorkey)時將全局g_merge_rgn減去該ui_render_rect_rgn交集

3. 從下往上順序遍歷所有所有控件并用控件自己的矩形ui_render_rect_rgn畫出控件

三。臟矩形渲染:
  有了上述的"去掉UI重疊部份的渲染", 這步就容易了,只要在渲染時判斷一下該控件是否更新過, 如果更新過則將更新過的rect與該ui_render_rect_rgn交集出新的rgn來畫.

四。關(guān)于渲染可能出現(xiàn)的邊線問題:
  一般是紋理在縮放過渡時使用linear采樣方式而控件使用UV尋址貼圖中小格子塊產(chǎn)生的(可在作圖時將格子塊象素外擴(kuò)一圈,或者程序?qū)V內(nèi)縮一圈來處理)

五。最后提下,要先渲染UI,再渲染場景,這樣來避免無效的ps, 另外UI固定部分在渲染場景時可用viewport去掉。

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// 關(guān)于漢字輸入相關(guān):
//         flipcode@msn.com
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

一。創(chuàng)建dialog模式設(shè)備:

   為了不用自己渲染輸入法框,也只好犧牲點性能,使用這種非真正獨占的模式的設(shè)備。

二。接收輸入漢字

 1。可以直接使用windows消息的WM_CHAR,漢字高位是大于127的(有符號char<0)自己處理判斷組合一下即可。

   2。也可以使用IME的來處理

三。漢字長度

 漢字有等寬字和非等寬字(普遍),非等寬字計算長度比較麻煩,需從頭遍歷。。。

四。非unicode漢字的截斷處理

 這個也比較麻煩,需從頭遍歷,如果使用unicode就沒這個問題

五。漢字的顯示

 需要貼圖緩存,再批次顯示

六。表情符號混顯:

 關(guān)于表符號混顯問題主要有兩點,一個是排版(具體處理就略過了),一個是表情動畫處理

 表情動畫可以簡單的使用cximage讀取解開各幀再整合到一張紋理上,按幀播放顯示。

 

七。輸入法定位:

 由于輸入法的處理一般是在消息回調(diào)函數(shù)里得到目標(biāo)wnd句柄,然后定位到這個wnd位置上,如果游戲中不使用windows控件的話,輸入法沒法自動定位到自定義的。只能靠用戶自己拖動。有一個簡單的處理是創(chuàng)建一個不用于顯示的假控件在對應(yīng)位置讓輸入法得以定位。。。(魔域這個網(wǎng)游真的很邪惡,里面全部使用mfc控件,只是渲染使用directx來接管。。。)

八。輸入法充許與關(guān)閉:

    估計很多人會碰到這個問題,就是只在輸入框打開時才充許有輸入法,如下處理

     m_hImc = ImmAssociateContext(hWnd,   NULL); 來關(guān)閉,再使用ImmAssociateContext(hWnd, m_hImc);   來打開


本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/flipcode/archive/2009/06/22/4287894.aspx

posted @ 2010-11-03 23:15 flipcode 閱讀(262) | 評論 (0)編輯 收藏

hon的歷史:

http://zh.wikipedia.org/wiki/S2_Games
S2 Games是一個專注開發(fā)電腦游戲的游戲開發(fā)機(jī)構(gòu),由Marc "Maliken" DeForest投資,設(shè)在加利福尼亞的

Rohnert Park。他們的第一作Savage: The Battle for Newerth于2003年夏天發(fā)行,是歷史上第一個RTTS——

即時戰(zhàn)略射擊游戲。續(xù)作 Savage 2: A Tortured Soul,2008年1月16日首先放出Windows版本。最新作品

Heroes of Newerth是一個仿照魔獸爭霸III著名場景DotA制作的游戲。

引擎:
Silverback
K2

大事記
2004,3個S2 Games成員離開并成立Offset Software
2006,S2 Games把與零售版本相同的Savage: The Battle for Newerth在自己網(wǎng)站上免費(fèi)釋放
2008,年初S2 Games發(fā)布Savage 2: A Tortured Soul;年末設(shè)立帳號制度,出現(xiàn)免費(fèi)帳號
2009,beta測試Heroes of Newerth
2009,啟動與Mod DB協(xié)作的活動


關(guān)于Offset Software
http://www.j2megame.org/index.php/content/view/1230/121.html
Intel收購游戲廠商Offset Software 
2008-02-27
  我們目前見到的畫面驚人的游戲引擎中,除了Epic的“虛幻引擎3”,還有就是Crytek的“Cryengine 2”

,實際上還有一家公司也曾經(jīng)宣布過自己有畫面驚人的游戲引擎,并在當(dāng)時引起了不小的爭論。這家公司就是

Offset Software。目前,在Offset Software公司的官方主頁上,已經(jīng)正式公布了他們已被Intel收購的消息


  2005年左右,Offset Software曾公布過他們獨自研發(fā)的“Offset Engine”引擎,在當(dāng)時不但光影效果驚

人,再加上支持圖形化的使用界面、64位HDR光影特性以及其他先進(jìn)技術(shù),確實營造出了不錯的效果。而且通

過“Offset Engine”非常直觀化的操作界面,使用者不需要掌握復(fù)雜的程序語言,僅需鼠標(biāo)就可以開啟多種

特效,使得游戲開發(fā)的過程過程變得異常簡便。

  而《Project offset》則是他們近期開發(fā)的具有奇幻背景的FPS游戲,據(jù)悉Intel收購Offset Software極

有可能是為了強(qiáng)化自家的3D技術(shù),以期提高將來Intel顯卡的游戲性能。

關(guān)于《Project offset》:
http://pc.yezizhu.com/news/200903/8035_2.shtml
奇幻FPS《project offset》展示精彩物理效果發(fā)表時間:2009-03-28 作者:abao 來源:未知查看熱點評論 
  Offset Software史詩式奇幻FPS新作《project offset》在此次GDC會展中公開了一段視頻演示,名字命

為“Meteor”(流星),展示了精彩的物理效果。該作有可能將會是PC獨占,因為已經(jīng)被Intel收購用來展示

Larrabee,不過目前還未確認(rèn)是否取消Xbox 360版本。
 

hon初步分析(flipcode@msn.com)

一。物件
1.紋理:
a. 一般是兩層貼圖:
   第一層是物件的基本貼圖(256*256),第二層各種物件總是相同的一個奇怪的縷空黑白圖(256*256),
中間是個黑色形狀圖塊(對應(yīng)的alpha全白,其它全灰).

b. 另外有些是3層貼圖:
   第一層是物件的基本貼圖(256*256),第二層各種物件總是相同的一個奇怪的縷空黑白圖(256*256),
第3層是個team color圖(黑白圖,白色部分混上顏色)

c. 此外有些物件帶光暈面片(用貼圖*頂點色渲染)
例如: 塔邊上有一個個發(fā)亮星星/光暈(就是一個個面片,然后用星狀顏色圖/中間發(fā)亮的黑白圖來跟面片頂點

色相乘)

2. 面數(shù):
  建筑600左右面(一個dip畫完,其它一些發(fā)光面片再另外按貼圖一起畫)


3. 渲染:
物件并不批次渲染,只是按貼圖排序渲染。(但是看到物件上的發(fā)亮相同貼圖的面片會合成一個批次,這可能是

美術(shù)直接作成一個mesh的)

另外hon的懸崖是直接使用地面網(wǎng)格做的,懸崖對應(yīng)地表格子可以水平移動并同時拉高,貼圖使用懸崖貼圖,這樣看起來也還可以。

好處是跟地表一致,渲染處理過渡自然,省面數(shù)。

二。角色:
1.紋理:
  一般是兩張紋理,一張是物體本色圖,另一張是team color圖(黑白圖,白色部分混上顏色)
  另外在高效果顯示時,會有法線圖。

2. 面數(shù):
  兵800左右面(一個dip畫完)
  英雄1200左右(一次dip畫完, 包括手上武器)

3. 渲染:
  物件并不批次渲染,只是按貼圖排序渲染。
  低效果時只是受漫射光,環(huán)境光,平行光影響, 如下:

  clr=貼圖顏色*頂點色*光照(光照=ambient+dot(N.L)*suncolor);

  高效果時會用法線圖進(jìn)行光照運(yùn)算,同時有高光計算.
  另外高效果時似乎還有點光源支持以及一個云貼圖,自遮擋陰影?沒具體分析.

  對于team color是這樣的:

  貼圖顏色 = 原圖色 * (teamcolor圖*teamcolor)
  即SetTexture( Texture0 = 原圖色, Texture1 =teamcolor圖); 然后只draw一次完成.


以上看來hon的角色非常簡單,是只有一個帶骨架的模型,不可換裝.

三。陰影:
  使用shadowmap動態(tài)陰影,在我機(jī)器上(ati hd3200集成顯卡)比較消耗,打開時fps30-40, 關(guān)閉時60-70

四。地表:
1. 紋理:
地表貼圖,最高時使用512*512,32bit,mip為9級

2. 渲染:
地表分批次渲染,每次最大不超過1089個頂點, 每批次對應(yīng)兩層紋理,通過頂點alpha混合過渡(頂點比較密)

五。界面:
1. 紋理:
血條的貼圖由黑底,紅條,黃條,綠條組成

2.渲染:
血條的渲染,先畫黑底框,再畫紅條,然后畫黃條,最后畫綠條.當(dāng)血漸漸少了,紅黃綠3個條同時由右向左縮

小(紅黃綠alpha漸少,紅少得快,黃其次,紅不變或少得慢), 黑框保持不縮放。

注:hon的這個血條并不批次渲染,而是每次渲染一個血條的一層.由底向上渲染,渲染完再換一個血條渲染.

渲染完所有血條之后,這才開始渲染普通界面。(alpah blend方式下使用貼圖*頂點顏色渲染)

六。后期處理:
   后期渲染,使用全屏泛光,類似nvglow,只是不指定物件alpha通道渲染,而是全屏泛光.
渲染順序, 先物件,再地表,然后是后期處理


本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/flipcode/archive/2010/04/06/5453714.aspx

posted @ 2010-11-03 23:14 flipcode 閱讀(432) | 評論 (0)編輯 收藏
僅列出標(biāo)題
共8頁: 1 2 3 4 5 6 7 8 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            怡红院精品视频在线观看极品| 亚洲区一区二| 欧美成人精品不卡视频在线观看| 亚洲视频欧美在线| 亚洲精品在线一区二区| 麻豆成人综合网| 欧美成人午夜激情视频| 欧美成人免费在线视频| 亚洲动漫精品| 久久久久久久一区二区| 久久精品国产99| 欧美 日韩 国产一区二区在线视频 | 欧美一区二区三区免费视频| 午夜精品亚洲| 久久一区中文字幕| 欧美岛国激情| 夜夜嗨网站十八久久| 亚洲欧美国产高清va在线播| 久久精品1区| 欧美成人免费网站| 国产精品卡一卡二| 在线观看一区| 亚洲综合视频1区| 久久九九有精品国产23| 欧美国产日本| 亚洲欧美卡通另类91av| 久久国产福利| 欧美日本三区| 激情偷拍久久| 亚洲一区二区三区在线视频 | 亚洲日本成人| 中日韩午夜理伦电影免费| 亚洲在线观看免费| 欧美91大片| 亚洲免费小视频| 欧美成人午夜免费视在线看片 | 欧美日韩在线电影| 国产一区二区三区久久精品| 99视频超级精品| 久久婷婷一区| 中文一区字幕| 欧美成人久久| 在线观看亚洲| 久久福利毛片| 99国产精品久久久久老师| 久久综合999| 国模私拍视频一区| 国产一区二区三区久久 | 欧美国产日本高清在线| 国产精品99久久久久久久久久久久| 久久久www成人免费毛片麻豆| 欧美日韩午夜| 亚洲精品一区在线观看香蕉| 亚洲国产精品久久久久婷婷老年| 亚洲综合日韩中文字幕v在线| 亚洲高清一区二| 久久久久久网址| 国产一级久久| 欧美一区视频| 亚洲欧美日韩国产精品| 国产精品久久久久久久久久久久久| 亚洲片国产一区一级在线观看| 久久亚洲不卡| 久久精品国产亚洲一区二区| 国产视频一区免费看| 午夜视频精品| 亚洲欧美99| 国产一区二区三区在线观看视频 | 香港成人在线视频| 亚洲校园激情| 国产精品网站视频| 午夜精品影院| 亚洲一区黄色| 国产日韩欧美黄色| 久久精品一二三区| 久久国产精品亚洲va麻豆| 国产揄拍国内精品对白| 久久午夜影视| 久久视频这里只有精品| 亚洲激情中文1区| 亚洲人成艺术| 国产精品久久久久久久久久尿| 亚洲伊人伊色伊影伊综合网| 亚洲视频一二区| 国产精品永久入口久久久| 亚洲欧美日韩国产综合精品二区| 国产精品99久久久久久久vr | 亚洲精品国产精品国产自| 欧美电影免费观看网站 | 久久蜜桃香蕉精品一区二区三区| 亚洲欧美一区二区激情| 国内外成人免费激情在线视频网站| 老司机久久99久久精品播放免费 | 国产精品地址| 性色av一区二区三区红粉影视| 午夜精品久久久久久久99樱桃| 国产精品日韩久久久| 麻豆av一区二区三区| 欧美电影免费观看高清| 欧美深夜福利| 久久久综合免费视频| 欧美激情精品久久久久久蜜臀| 亚洲一区日韩| 久久午夜国产精品| 在线视频亚洲欧美| 久久精品一区| 午夜在线电影亚洲一区| 久久亚洲综合色| 亚洲综合电影| 久久一二三四| 午夜一级在线看亚洲| 欧美成人精品影院| 久久亚洲精品一区| 欧美午夜电影在线| 欧美va亚洲va日韩∨a综合色| 欧美色图首页| 最新成人av在线| 伊人激情综合| 先锋影音一区二区三区| 亚洲一区免费看| 欧美精品一线| 欧美黄色精品| 在线观看欧美日韩国产| 校园春色国产精品| 亚洲一区二区三区在线看 | 亚洲一区二区三区四区中文| 欧美成人精品在线视频| 久热re这里精品视频在线6| 国产精品美女在线观看| 日韩亚洲欧美一区| 日韩亚洲欧美精品| 免费试看一区| 亚洲电影在线播放| 亚洲国产婷婷香蕉久久久久久99 | 日韩一区二区免费高清| 日韩午夜在线| 欧美激情第六页| 亚洲黄色大片| 99国产精品视频免费观看一公开| 久久视频在线免费观看| 麻豆成人在线播放| 亚洲第一精品福利| 美女露胸一区二区三区| 欧美成人一区在线| 亚洲欧洲一区二区三区| 噜噜噜在线观看免费视频日韩| 噜噜噜噜噜久久久久久91| 国产色综合网| 久久久久国产一区二区| 欧美不卡视频一区| 久久精品国产91精品亚洲| 国内久久精品视频| 久久裸体艺术| 欧美激情欧美狂野欧美精品| 亚洲激情在线激情| 欧美日韩精品免费| 亚洲视频视频在线| 久久久亚洲一区| 亚洲激情在线激情| 欧美日韩亚洲视频一区| 亚洲一区二区精品视频| 西瓜成人精品人成网站| 好吊一区二区三区| 欧美aa国产视频| 亚洲美女一区| 欧美在线视频观看免费网站| 韩国v欧美v日本v亚洲v| 欧美xx视频| 亚洲网站视频福利| 麻豆成人综合网| 一区二区三区欧美日韩| 国产精品一区二区a| 久久久久99| 日韩一区二区精品视频| 久久午夜av| 亚洲欧美日本视频在线观看| 狠狠色丁香久久婷婷综合_中| 欧美国产日韩视频| 欧美亚洲一区在线| 亚洲精品日韩一| 久久精精品视频| 99re热精品| 极品av少妇一区二区| 欧美视频国产精品| 麻豆亚洲精品| 欧美一区二区网站| 夜夜爽www精品| 亚洲高清视频的网址| 久久激情一区| 午夜伦欧美伦电影理论片| 亚洲国产日韩欧美| 国产一二三精品| 国产精品毛片一区二区三区| 欧美激情精品久久久久久变态| 久久电影一区| 亚洲欧美成人精品| 一区二区三区国产盗摄| 亚洲激情av| 欧美风情在线| 久久久亚洲成人|