title
author
date
createtime
categories
sharpdx 進入全屏模式
lindexi
2019-5-31 9:5:36 +0800
2019-5-30 20:1:26 +0800
directx sharpdx 渲染
本文屬於 sharpdx 系列 部落格,建議從頭開始讀
在 sharpdx 裡面可以通過兩個方法進入全屏模式,乙個是視窗進入全屏,另乙個是交換鏈進入全屏
和普通的 wpf 視窗差不多,可以在 renderform 建立的時候設定進入全屏模式,全屏就是最大化的視窗同時去掉標題欄,隱藏工作列
在 windows 只要整個螢幕的所有畫素被填充,那麼工作列將會自動隱藏
在 renderform 有乙個屬性是 isfullscreen 如果單修改這個屬性是沒有用的,需要同時設定 allowuserresizing 屬性
_renderform=new
renderform();
_renderform.windowstate
=formwindowstate.maximized;
_renderform.isfullscreen
=true;
_renderform.allowuserresizing
=false;
這樣就可以進入全屏,沒有標題欄和工作列
在視窗裡面可以通過 transparencykey 設定某個顏色作為透明顏色,然後通過 allowtransparency 設定支援透明
_renderform.transparencykey=color.transparent;
_renderform.allowtransparency
=true;
這時畫出的透明的顏色就是讓視窗透明,透明的部分會命中到後面的元素
和 wpf 的全屏不相同的是,在 sharpdx 裡面不會占用螢幕透明的記憶體,也就是透明部分不需要使用程式程序的記憶體
如果開啟交換鏈的全屏,那麼視窗透明將無法使用,使用交換鏈透明,在 windows 的 dwm 將會整個螢幕的繪製交給程式,此時的程式繪製速度能更快
其他的應用有關渲染部分都不會執行,特別是其他的 dx 程式,這樣程式可以用到很多的計算。用交換鏈的全屏可以做到更高的效能,但是在進入的時候都會因為螢幕顯示切換出現黑色,現在很少有遊戲使用交換鏈全屏
privatevoid
initializedeviceresources()
;device.createwithswapchain(drivertype.hardware, devicecreationflags.none, swapchaindesc,
out_d3ddevice, out
_swapchain);
// 全屏
_swapchain.setfullscreenstate(new
rawbool(true), null);
// 忽略**
}
通過 setfullscreenstate 可以將交換鏈的渲染資訊輸出到螢幕,在windows vista或更高版本中其實 獨佔 模式不會讓整個程式用到所有的 gpu 資源,因為 gpu 是共享的,但是可以讓程式用到更多的資源。清真的程式在其他程式進去全屏的時候,渲染策略會和這個程式最小化一樣,不會做實際渲染
sharpdx 系列
sharpdx.dxgi.swapchain.setfullscreenstate(sharpdx.mathematics.interop.rawbool, sharpdx.dxgi.output) example
dxgi api sharpdx
2019 5 31 學習 分享會 總結???
啊啊啊有人可以幫忙補充嗎 1.初三 好像說得挺少的。2.初二 balabala收穫挺多。上課的話,課文貌似沒什麼好聽的?閱讀作文 zyc大佬 作文要假。xxy 冒出 什麼?zyc 最好提前想好材料,初二都是寫人的。爺爺奶奶外公外婆最好寫了 然後開頭,開門見山或環境渲染什麼的,可以借用一下其他句子。z...
sh 指令碼語法
介紹 1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin sh來執行程式。當編寫指令碼完成時,如果要執行該指令碼,還必須使其可執行。要使編寫指令碼可執行 編譯 chmod x filename 這樣...
日誌清理 sh
bin bash log dir var log root uid 0 lines 50 e xcd 66 e notroot 67 e wrongargs 65 if uid ne root uid then echo must be root to run this script.exit e ...