欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Dx渲染引擎嵌入到另一dx渲染引擎的方法和裝置的制造方法

文檔序號:8445403閱讀:675來源:國知局
Dx渲染引擎嵌入到另一dx渲染引擎的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及渲染引擎內(nèi)嵌領(lǐng)域,尤其涉及一種DX渲染引擎嵌入到另一 DX渲染引擎的方法
【背景技術(shù)】
[0002]虛幻3引擎是市面上較好的游戲渲染引擎,目前只有cry引擎與寒霜引擎效果強于虛幻3引擎,將虛幻3引擎嵌套到其他引擎中能夠顯著提高產(chǎn)品的渲染效果。渲染引擎的嵌入一般有如下形式:DX渲染內(nèi)嵌到⑶I渲染,⑶I渲染內(nèi)嵌到DX渲染,⑶I渲染內(nèi)嵌到⑶I渲染,或者DX渲染內(nèi)嵌到DX渲染。DX渲染與⑶I渲染引擎的相互內(nèi)嵌較為容易,在一個進程里可以很容易做到(因為渲染用到的硬件資源不沖突),DX渲染引擎內(nèi)嵌到另一個DX渲染引擎的情況下,由于二者放在同一個進程中會有渲染設(shè)備爭用問題,導(dǎo)致不必要的界面閃爍;我們要解決的就是DX渲染內(nèi)嵌到其它DX渲染的問題,并提供一些優(yōu)化方案。現(xiàn)有技術(shù)沒有引擎的相互嵌入,因此在渲染的時候效率不高,效果不好。

【發(fā)明內(nèi)容】

[0003]為此,需要提供一種DX渲染引擎內(nèi)嵌到另一個DX渲染引擎的技術(shù)方案,提高渲染效果。
[0004]為實現(xiàn)上述目的,發(fā)明人提供了一種DX渲染引擎嵌入到另一 DX渲染引擎的方法,包括如下步驟:
[0005]啟動主渲染進程;
[0006]啟動副渲染進程;
[0007]副渲染進程渲染畫面,得到渲染結(jié)果;
[0008]主渲染進程獲取所述渲染結(jié)果。
[0009]具體的,所述主渲染進程采用S3渲染引擎,所述副渲染進程采用U3渲染引擎。
[0010]進一步的,所述渲染結(jié)果包括已渲染畫面和渲染完成信息;
[0011]還包括步驟:將已渲染畫面存至共享內(nèi)存;
[0012]所述主渲染進程獲取渲染結(jié)果還包括一判斷步驟,具體為:
[0013]主渲染進程判斷是否檢測到渲染完成信息,若是則從共享內(nèi)存提取已渲染畫面。
[0014]進一步的,還包括步驟:副渲染進程判斷是否檢測到與主渲染進程建立聯(lián)系,若否,貝lJ通過createprocess獲取主植染進程的句柄。
[0015]進一步的,還包括步驟:隱藏副渲染進程界面,所述副渲染進程界面的顯示內(nèi)容包括啟動時過場畫面和啟動完成后的植染界面,可以通過ShowWindow函數(shù)隱藏窗口。
[0016]具體的,還包括步驟:主渲染進程與副渲染進程通過copydata共享渲染素材。
[0017]一種DX渲染引擎嵌入到另一 DX渲染引擎的裝置,包括進程啟動模塊、渲染模塊、結(jié)果獲取模塊:
[0018]所述進程啟動模塊用于啟動主渲染進程;
[0019]所述進程啟動模塊還用于啟動副渲染進程;
[0020]所述渲染模塊用于使副渲染進程渲染畫面,得到渲染結(jié)果;
[0021 ] 所述結(jié)果獲取模塊用于使主渲染進程獲取所述渲染結(jié)果。
[0022]具體的,所述主渲染進程采用S3渲染引擎,所述副渲染進程采用U3渲染引擎。
[0023]具體的,所述渲染結(jié)果包括已渲染畫面和渲染完成信息;
[0024]還包括共享模塊、所述共享模塊用于將已渲染畫面存至共享內(nèi)存;
[0025]所述結(jié)果獲取模塊用于在檢測到渲染完成信息后從共享內(nèi)存提取已渲染畫面。
[0026]進一步的,還包括句柄獲取模塊:所述句柄獲取模塊用于在副渲染進程判斷到未與主渲染進程建立聯(lián)系時,主渲染進程通過調(diào)用createprocess函數(shù)啟動副渲染進程,通過命令行方式把主渲染進程的句柄傳遞給副渲染進程,并存儲起來。
[0027]進一步的,還包括界面隱藏模塊:所述界面隱藏模塊用于隱藏副渲染進程界面,所述副渲染進程界面的顯示內(nèi)容包括啟動時過場畫面和啟動完成后的渲染界面,可以通過Showffindow函數(shù)隱藏窗口。
[0028]具體的,還包括素材共享模塊:所述素材共享模塊用于使主渲染進程與副渲染進程通過copydata共享植染素材。
[0029]區(qū)別于現(xiàn)有技術(shù),上述技術(shù)方案提供了DX渲染引擎嵌入另一個DX渲染引擎的技術(shù)方案,提高了渲染效率和渲染效果。
【附圖說明】
[0030]圖1為本發(fā)明某實施例的方法流程圖;
[0031]圖2為本發(fā)明某實施例的裝置模塊圖;
[0032]圖3為本發(fā)明某實施例所述的流程示意圖。
[0033]附圖標記說明:
[0034]21、進程啟動模塊;
[0035]23、渲染模塊;
[0036]25、結(jié)果獲取模塊;
[0037]27、共享模塊;
[0038]29、句柄獲取模塊;
[0039]211、素材共享模塊;
[0040]213、界面隱藏模塊。
【具體實施方式】
[0041]為詳細說明技術(shù)方案的技術(shù)內(nèi)容、構(gòu)造特征、所實現(xiàn)目的及效果,以下結(jié)合具體實施例并配合附圖詳予說明。
[0042]請參閱圖1,為本發(fā)明某些實施例所述的一種DX渲染引擎嵌入到另一 DX渲染引擎的方法,包括如下步驟:
[0043]步驟S101,啟動主渲染進程;
[0044]步驟S102,啟動副渲染進程;
[0045]步驟S103,副渲染進程渲染畫面,得到渲染結(jié)果;
[0046]主渲染進程獲取所述渲染結(jié)果。
[0047]所述主渲染進程和副渲染進程均采用DX渲染引擎,在某些實施例中,在啟動主渲染進程后,再啟動副渲染進程,調(diào)用副渲染進程渲染畫面,得到渲染結(jié)果,所述渲染方法包括但不限于2D渲染、3D渲染;所述渲染結(jié)果包括但不限于模型外觀、界面外觀、游戲場景、單幀畫面、多幀畫面等多種實施方式。最后通過主渲染進程獲取所述渲染結(jié)果,所述獲取的通信方式包括但不限于管道、共享內(nèi)存、信號量、郵件、copydata等。通過上述方式,達到了主渲染進程能夠調(diào)用副渲染進程的渲染結(jié)果的技術(shù)效果,所述渲染結(jié)果可以用主渲染進程進行顯示,可以對其進行進一步處理,解決了沒有渲染引擎嵌入的某些實施方式中渲染效率不高,渲染效果不好的問題。
[0048]在某些具體的實施例中,所述主渲染進程采用S3渲染引擎,所述副渲染進程采用U3渲染引擎。S3是指Scalpel 3引擎(或稱為手術(shù)刀引擎第三代),該引擎是兼容性高渲染效果較好的游戲渲染引擎,在內(nèi)容處理上有獨特優(yōu)勢,是在Π界面處理上有開發(fā)速度快,質(zhì)量較好的優(yōu)勢,U3引擎是市面上頂尖的虛幻3渲染引擎,效果遠好于同類產(chǎn)品,將虛幻3引擎嵌套到其他引擎中能夠顯著提高產(chǎn)品的渲染效果,但單獨運行資源占用過高。通過在S3渲染引擎中嵌入U3引擎,能夠?qū)⑾到y(tǒng)資源率利用最大化,渲染出來的畫面效果也更加逼真,游戲性更強。
[0049]進一步的,所述渲染結(jié)果包括已渲染畫面和渲染完成信息;所述已渲染畫面可以是單幀畫面信息,也可以是多幀畫面;
[0050]在某些實施例中,在副渲染進程渲染畫面完成后,得到已渲染畫面后,同時創(chuàng)建渲染完成信息。所述渲染完成信息可以是任何變量,也可以是容易被進程創(chuàng)建和消去并檢測的函數(shù)、指令、信息等等。在某些實施例中,可以為信號量,信號量是主渲染進程與副渲染進程通訊方式的一種,可以控制副渲染進程與主渲染進程異步交互。例如在圖3所示的某些實施例中,在本方法的開始階段,主渲染進程創(chuàng)建一個標識為O的讀信號量和一個標識為I的寫信號量,讀信號量表示主渲染進程是否可以從共享內(nèi)存里面讀取渲染數(shù)據(jù),寫信號量表示副渲染進程是否可以往共享內(nèi)存中寫入渲染數(shù)據(jù),副渲染進程一開始獲取寫信號量(因為標識為I),渲染畫面完成后,即所述的創(chuàng)建渲染完成信息,還進行步驟S104:將已渲染畫面存至共享內(nèi)存,然后將所述讀信號量+1,寫信號量減1,表示副渲染進程已經(jīng)往共享內(nèi)存里存入渲染數(shù)據(jù),主渲染進程可以從共享內(nèi)存里讀取數(shù)據(jù);所述共享內(nèi)存也是主渲染進程與副渲染進程通訊方式的一種,適于交換較大的數(shù)據(jù),如分辨率較高的畫面等等。所述主渲染進程獲取渲染結(jié)果還包括一判斷步驟S105:主渲染進程判斷是否檢測到渲染完成信息,在圖3所示的實施例中,即檢測讀信號量是否為1,若是則進行步驟S106從共享內(nèi)存提取已渲染畫面,提取完畢后再將寫信號量加1,讀信號量-1,表示主渲染進程已經(jīng)從共享內(nèi)存讀取渲染數(shù)據(jù)完畢,副進程可以往共享內(nèi)存里寫入渲染數(shù)據(jù)。通過圖3所示的循環(huán),寫信號量與讀信號量都達到了所述渲染完成信息的效果綜上,通過設(shè)計創(chuàng)建渲染完成信息步驟,使得副渲染進程自動的不斷進行渲染畫面的同時,主渲染進程也能夠自動的不斷將已渲染畫面提取。直到應(yīng)用程序關(guān)閉或者接到其他命令跳出循環(huán)。通過最簡便的方法達到了已渲染畫面幀的共享操作。
[0051]具體的,副渲染進程還包括步驟S106:判斷是否檢測到與主渲染進程建立聯(lián)系,若否,則通過createprocess獲取主植染進程的句柄。在主植染進程啟動副植染進程的時候,就需要副渲染進程與主渲染進程建立聯(lián)系,通過主渲染進程調(diào)用createprocess函數(shù)啟動副渲染進程時,通過里面的lpCo_andLine參數(shù)命令行,把主渲染進程的窗口句柄傳遞給副渲染進程,,并且把主渲染進程的句柄保存在副渲染進程里。在另一些實施例中,還有丟失設(shè)備(LostDevice)的情形,例如在鎖屏操作時使得渲染設(shè)備丟失,這時候便需要副渲染進程主動尋找主渲染進程建立聯(lián)系,否則將導(dǎo)致某些數(shù)據(jù)無法向共享內(nèi)存中寫入,進而導(dǎo)致像素點丟失、花屏等降低用戶體驗的情形發(fā)生。此時也需要之前存儲下來的主渲染進程的句柄。通過上述步驟,不但使得主副渲染進程啟動時能夠順利建立聯(lián)系,也克服了上述丟失設(shè)備的情況,也避免了丟失設(shè)備可能導(dǎo)致的問題。提高了本方法的實用性。
[0052]在某些具體的實施例中,還包括步驟S107:隱藏副渲染進程界面,所述副渲染進程界面的顯示內(nèi)容包括啟動時過場畫面和啟動完成后的植染界面,可以通過ShowWindow函數(shù)隱藏窗口。因為采用的是兩個進程的方式,通常情況下兩個進程的界面都會顯示出來,在優(yōu)選的實施例中,為了使U3引擎子進程默默在后臺工作,把渲染好的數(shù)據(jù)傳遞給S3引擎父進程,所以需要隱藏U3引擎界面。具體的,獲取U3引擎子進程的渲染結(jié)果,在每幀渲染畫面渲染完成后,通過隱藏上述副渲染進程界面的顯示內(nèi)容信息,把副渲染進程界面隱藏掉。通過上述方案,使得副渲染進程界面不再顯示,不會影響用戶的實用體驗。達到了提高本發(fā)明實用性的效果。
[0053]在另一些具體的實施例中,還包括步驟S108:主渲染進程與副渲染進程通過c
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
平和县| 兰西县| 多伦县| 化德县| 岳池县| 迁西县| 通辽市| 金塔县| 喀喇| 乐昌市| 宿州市| 南康市| 深水埗区| 宝坻区| 绥中县| 休宁县| 天门市| 沙坪坝区| 新余市| 绥棱县| 辽源市| 望谟县| 静宁县| 开化县| 墨江| 巫山县| 晋江市| 牡丹江市| 田林县| 额济纳旗| 清苑县| 彭山县| 得荣县| 汝城县| 海南省| 和林格尔县| 辰溪县| 凤凰县| 团风县| 苍溪县| 澳门|