專利名稱:一種多線程環(huán)境下基于消息的無同步3d渲染方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種動畫數(shù)據(jù)處理方法,尤其是涉及一種多線程環(huán)境下基于消息的無 同步3D渲染方法。
背景技術(shù):
典型的3D應(yīng)用,如3D游戲等,需要把3D渲染和邏輯事件的處理分開,以提高系統(tǒng) 邏輯處理能力和3D渲染效果。為此,3D開發(fā)中往往使用多線程來處理,以提升并行處理能 力。但是,多線程的加入也為軟件開發(fā)復(fù)雜度帶來更高的要求,更重要的是對資源的管理要 求更為嚴格,特別是資源的訪問不能沖突。
已有解決方案是,對多線程訪問的資源進行同步,如加線程鎖進行控制。這種方法 能有效地解決資源訪問沖突造成的系統(tǒng)崩潰等問題,但對軟件開發(fā)人員的要求會很高,對 多線程控制能力要求很強,只要出現(xiàn)任何一個紕漏都可能讓整個系統(tǒng)出錯。同時,頻繁的多 線程同步反而會降低系統(tǒng)的性能。發(fā)明內(nèi)容
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種可實現(xiàn)邏輯處 理和3D渲染并行計算,且并行處理高效的多線程環(huán)境下基于消息的無同步3D渲染方法。
本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn)
一種多線程環(huán)境下基于消息的無同步3D渲染方法,該方法采用操作系統(tǒng)的消息 機制作為通信手段,通過監(jiān)測當(dāng)前3D場景的使用情況,動態(tài)分配CPU時間進行邏輯事務(wù)處 理、資源訪問和3D渲染操作,進行多線程同步控制,具體包括以下步驟
a)初始化3D環(huán)境,根據(jù)硬件顯卡及所使用的圖形API初始化3D環(huán)境;
b) CPU分配線程模塊監(jiān)測并統(tǒng)計當(dāng)前3D場景的使用情況,計算并動態(tài)分配CPU時 間片;
c) CPU分配線程模塊把分配的CPU時間片通過消息方式通知主線程模塊;
d)主線程模塊處理接收到消息,并判斷是否需要退出系統(tǒng),若是,則退出,若否,則 執(zhí)行步驟e);
e)主線程模塊根據(jù)接收到的消息,以消息響應(yīng)方式進行邏輯事務(wù)處理、資源訪問 和3D渲染。
所述的動態(tài)分配CPU時間片具體為
I)統(tǒng)計當(dāng)前3D場景所渲染的對象數(shù)量,包括實體對象和紋理數(shù)據(jù);
2)記錄前一幀邏輯事務(wù)處理所花費的時間;
3)預(yù)測下一幀的邏輯事務(wù)處理時間及3D渲染對象數(shù)量;
4)根據(jù)下一幀預(yù)測值和前一幀統(tǒng)計值獲得CPU時間片分配值。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點
I、保持傳統(tǒng)的多線程功能,以實現(xiàn)邏輯處理和3D渲染的并行計算;
2、取消多線程同步機制,通過機制保障資源的無沖突訪問,帶來高效并行的處理。
圖I為本發(fā)明的結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細說明。本實施例以本發(fā)明技術(shù)方案 為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于 下述的實施例。
實施例
一種多線程環(huán)境下基于消息的無同步3D渲染方法,該方法采用操作系統(tǒng)的消息 機制作為通信手段,通過監(jiān)測當(dāng)前3D場景的使用情況,動態(tài)分配CPU時間進行邏輯事務(wù)處 理、資源訪問和3D渲染操作,進行多線程同步控制。
如圖I所示,上述渲染方法具體包括以下步驟
a)初始化3D環(huán)境,根據(jù)硬件顯卡及所使用的圖形API初始化3D環(huán)境;
b) CPU分配線程模塊監(jiān)測并統(tǒng)計當(dāng)前3D場景的使用情況,計算并動態(tài)分配CPU時 間片;
c) CPU分配線程模塊把分配的CPU時間片通過消息方式通知主線程模塊;
d)主線程模塊判斷是否收到消息,若否,則返回步驟C),若是,則處理接收到消 息,并判斷是否需要退出系統(tǒng),若是,則退出,若否,則執(zhí)行步驟e);
e)主線程模塊根據(jù)接收到的消息,以消息響應(yīng)方式進行邏輯事務(wù)處理、資源訪問 和3D渲染,處理完畢后,接收下一條消息。
所述的動態(tài)分配CPU時間片具體為
I)統(tǒng)計當(dāng)前3D場景所渲染的對象數(shù)量,包括實體對象和紋理數(shù)據(jù);
2)記錄前一幀邏輯事務(wù)處理所花費的時間;
3)預(yù)測下一幀的邏輯事務(wù)處理時間及3D渲染對象數(shù)量;
4)根據(jù)下一幀預(yù)測值和前一幀統(tǒng)計值獲得CPU時間片分配值。
上述多線程環(huán)境下基于消息的無同步3D渲染方法保持傳統(tǒng)的多線程功能,以實 現(xiàn)邏輯處理和3D渲染的并行計算,同時取消多線程同步機制,通過機制保障資源的無沖突 訪問,帶來高效并行的處理。
權(quán)利要求
1.一種多線程環(huán)境下基于消息的無同步3D渲染方法,其特征在于,該方法采用操作系統(tǒng)的消息機制作為通信手段,通過監(jiān)測當(dāng)前3D場景的使用情況,動態(tài)分配CPU時間進行邏輯事務(wù)處理、資源訪問和3D渲染操作,進行多線程同步控制,具體包括以下步驟 a)初始化3D環(huán)境,根據(jù)硬件顯卡及所使用的圖形API初始化3D環(huán)境; b)CPU分配線程模塊監(jiān)測并統(tǒng)計當(dāng)前3D場景的使用情況,計算并動態(tài)分配CPU時間片; c)CPU分配線程模塊把分配的CPU時間片通過消息方式通知主線程模塊; d)主線程模塊處理接收到消息,并判斷是否需要退出系統(tǒng),若是,則退出,若否,則執(zhí)行步驟e); e)主線程模塊根據(jù)接收到的消息,以消息響應(yīng)方式進行邏輯事務(wù)處理、資源訪問和3D渲染。
2.根據(jù)權(quán)利要求I所述的一種多線程環(huán)境下基于消息的無同步3D渲染方法,其特征在于,所述的動態(tài)分配CPU時間片具體為 1)統(tǒng)計當(dāng)前3D場景所渲染的對象數(shù)量,包括實體對象和紋理數(shù)據(jù); 2)記錄前一幀邏輯事務(wù)處理所花費的時間; 3)預(yù)測下一幀的邏輯事務(wù)處理時間及3D渲染對象數(shù)量; 4)根據(jù)下一幀預(yù)測值和前一幀統(tǒng)計值獲得CPU時間片分配值。
全文摘要
本發(fā)明涉及一種多線程環(huán)境下基于消息的無同步3D渲染方法,該方法采用操作系統(tǒng)的消息機制作為通信手段,通過監(jiān)測當(dāng)前3D場景的使用情況,動態(tài)分配CPU時間進行邏輯事務(wù)處理、資源訪問和3D渲染操作,進行多線程同步控制。與現(xiàn)有技術(shù)相比,本發(fā)明可在不使用線程同步手段的情況下實現(xiàn)邏輯處理和3D渲染并行計算,具有并行處理高效等優(yōu)點。
文檔編號G06F9/38GK102981809SQ201210587740
公開日2013年3月20日 申請日期2012年12月28日 優(yōu)先權(quán)日2012年12月28日
發(fā)明者林秀全, 鄭婉清, 高小玲 申請人:上海創(chuàng)圖網(wǎng)絡(luò)科技發(fā)展有限公司