1.一種渲染方法,其特征在于,包括如下步驟:
獲取當前顯示畫面上的所有對象,并將獲取的所有對象根據(jù)顯示層次關系排列在對象列表中;其中,所述的所有對象包括至少一個2D對象和至少一個3D對象,且所述3D對象包括至少一個被注冊了回調函數(shù)的分塊;
監(jiān)聽用戶的點擊操作,并根據(jù)所述對象的顯示層次及所述點擊操作的坐標確定被點擊的對象;
當判斷被點擊的對象為3D對象時,根據(jù)所述坐標確定所述3D對象被點擊的分塊;
根據(jù)所述顯示層次關系對所述對象列表內的對象進行渲染,以生成發(fā)送至顯示屏的畫面幀;
調用為所述被點擊的分塊注冊的回調函數(shù)對所述被點擊的分塊進行處理。
2.根據(jù)權利要求1所述的渲染方法,其特征在于,所述監(jiān)聽用戶的點擊操作,并根據(jù)所述對象的顯示層次及所述點擊操作的坐標確定被點擊的對象,具體包括:
監(jiān)聽用戶的點擊操作,并獲取所述點擊操作的坐標;
當判斷所述坐標位于一個2D對象的像素包圍盒中時,對所述2D對象進行標記;
將所述坐標轉化為投影平面坐標,并以3D引擎中的虛擬攝像機位置為原點向所述投影平面坐標做射線,對所述射線與3D世界內的3D對象做求交操作,并對與所述射線具有相交關系的3D對象進行標記;
比較被標記的2D對象和/或被標記的3D對象的顯示層次,并將所述顯示層次處于最上層的對象設置為被點擊的對象。
3.根據(jù)權利要求2所述的渲染方法,其特征在于,所述當判斷被點擊的對象為3D對象時,根據(jù)所述坐標確定所述3D對象的被點擊的分塊,具體為:
當判斷被點擊的對象為3D對象時,獲取與所述射線有相交關系的面片所在的分塊,并確定所述分塊為被點擊的分塊。
4.根據(jù)權利要求1所述的渲染方法,其特征在于,所述根據(jù)所述顯示層次關系對所述對象列表內的對象進行渲染,以生成發(fā)送至顯示屏的畫面幀具體為:
根據(jù)所述對象的顯示層次關系確定當前渲染的對象;
當判斷當前要渲染的對象為2D對象時,將所述2D對象發(fā)送給2D引擎進行渲染,并將由所述2D引擎渲染得到的2D資源繪制在預先申請的與當前顯示畫面的大小對應的系統(tǒng)內存中;
當判斷當前要渲染的對象為3D對象時,將所述3D對象發(fā)送給3D引擎進行渲染得到3D資源,并在確定預先申請的與當前顯示畫面的大小對應的系統(tǒng)內存中存儲有由2D對象渲染得到的2D資源時,將所述2D資源及所述3D資源發(fā)送給顯卡進行渲染,并再次申請與當前顯示畫面的大小對應的系統(tǒng)內存;
在完成對所述對象列表中的所有對象的渲染后,生成發(fā)送至顯示屏的畫面幀。
5.根據(jù)權利要求1至4任意一項所述的渲染方法,其特征在于,在獲取當前顯示畫面上的所有對象之前,還包括:
在2d引擎中引入3d引擎的渲染和消息處理機制,并將3d引擎與當前顯示畫面的窗口關聯(lián),以創(chuàng)建得到2d渲染和3d渲染的混合環(huán)境及將3d引擎的渲染和消息處理循環(huán)機制加入到2D游戲邏輯的主循環(huán)機制當中。
6.一種渲染裝置,其特征在于,包括:
對象獲取單元,用于獲取當前顯示畫面上的所有對象,并將獲取的所有對象根據(jù)顯示層次關系排列在對象列表中;其中,所述的所有對象包括至少一個2D對象和至少一個3D對象,且所述3D對象包括至少一個被注冊了回調函數(shù)的分塊;
對象監(jiān)聽單元,用于監(jiān)聽用戶的點擊操作,并根據(jù)所述對象的顯示層次及所述點擊操作的坐標確定被點擊的對象;
分塊確定單元,用于當判斷被點擊的對象為3D對象時,根據(jù)所述坐標確定所述3D對象被點擊的分塊;
混合渲染單元,用于根據(jù)所述顯示層次關系對所述對象列表內的對象進行渲染,以生成發(fā)送至顯示屏的畫面幀;
回調函數(shù)調用單元,用于調用為所述被點擊的分塊注冊的回調函數(shù)對所述被點擊的分塊進行處理。
7.根據(jù)權利要求6所述的渲染裝置,其特征在于,所述對象監(jiān)聽單元具體包括:
坐標監(jiān)聽模塊,用于監(jiān)聽用戶的點擊操作,并獲取所述點擊操作的坐標;
2D點擊判斷模塊,用于當判斷所述坐標位于一個2D對象的像素包圍盒中時,對所述2D對象進行標記;
3D點擊判斷模塊,用于將所述坐標轉化為投影平面坐標,并以3D引擎中的虛擬攝像機位置為原點向所述投影平面坐標做射線,對所述射線與3D世界內的3D對象做求交操作,并對與所述射線具有相交關系的3D對象進行標記;
比較被標記的2D對象和/或被標記的3D對象的顯示層次,并將所述顯示層次處于最上層的對象設置為被點擊的對象。
8.根據(jù)權利要求7所述的渲染裝置,其特征在于,所述分塊確定單元具體用于,當判斷被點擊的對象為3D對象時,獲取與所述射線有相交關系的面片所在的分塊,并確定所述分塊為被點擊的分塊。
9.根據(jù)權利要求6所述的渲染裝置,其特征在于,所述混合渲染單元具體包括:
對象確定模塊,用于根據(jù)所述對象的顯示層次關系確定當前渲染的對象;
2D對象渲染模塊,用于當判斷當前要渲染的對象為2D對象時,將所述2D對象發(fā)送給2D引擎進行渲染,并將由所述2D引擎渲染得到的2D資源繪制在預先申請的與當前顯示畫面的大小對應的系統(tǒng)內存中;
3D對象渲染模塊,用于當判斷當前要渲染的對象為3D對象時,將所述3D對象發(fā)送給3D引擎進行渲染得到3D資源,并在確定預先申請的與當前顯示畫面的大小對應的系統(tǒng)內存中存儲有由2D對象渲染得到的2D資源時,將所述2D資源及所述3D資源發(fā)送給顯卡進行渲染,并再次申請與當前顯示畫面的大小對應的系統(tǒng)內存;
畫面?zhèn)鬏斈K,用于在完成對所述對象列表中的所有對象的渲染后,生成發(fā)送至顯示屏的畫面幀。
10.根據(jù)權利要求6至9任意一項所述的渲染裝置,其特征在于,還包括:
環(huán)境創(chuàng)建單元,用于在2d引擎中引入3d引擎的渲染和消息處理機制,并將3d引擎與當前顯示畫面的窗口關聯(lián),以創(chuàng)建得到2d渲染和3d渲染的混合環(huán)境及將3d引擎的渲染和消息處理循環(huán)機制加入到2D游戲邏輯的主循環(huán)機制當中。