日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# DirectX编程设置全屏和PresentParameters参数

發布時間:2025/4/14 C# 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# DirectX编程设置全屏和PresentParameters参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

見此;

https://blog.csdn.net/bcbobo21cn/article/details/44890937

D3D初始化時首先設置了PresentParameters參數;暫時沒有此參數的C#參考;參閱C++相關定義看一下;

此參數,定義后臺緩存表面的參數(包括深度模板緩存是否定義和像素格式);在C++中是一個結構體;

typedef structD3DPRESENT_PARAMETERS {
? UINT ? ? ? ? ? ? ? ?BackBufferWidth; // 窗口模式可以為0,全屏模式是EnumAdapterModes的一個返回值
? UINT ? ? ? ? ? ? ? ?BackBufferHeight;//同上
? D3DFORMAT ?BackBufferFormat;//窗口模式可用D3DFMT_UNKNOWN,全屏模式是CheckDeviceType的返回值
? UINT ? ? ? ? ? ? ? ?BackBufferCount;//賦值0將是1,D3DSWAPEFFECT_COPY交換表現只能是一個后臺緩存,一般為1
? D3DMULTISAMPLE_TYPE ? ? ?MultiSampleType;// D3DWAPEFFECT_DISCARD下才能用多重采樣,否則都是D3DMULTSAMPLE_NONE
? DWORD ? ? ? ? ? ? ? MultiSampleQuality;//要用CheckDeviceMultiSampleType,值[0,CheckDeviceMultiSampleType-1]
? D3DSWAPEFFECT ? ? ? ?SwapEffect;// D3DSWAPEFFECT_COPY只能在后臺緩存個數是1,一般用D3DSWAPEFFECT__DISCARD
? HWND ? ? ? ? ? ? ? ?hDeviceWindow;//窗口模式下可以為NULL,全屏模式下是CreateDevice的hFocusWindow
? BOOL ? ? ? ? ? ? ? ?Windowed;//窗口模式,還是全屏模式
? BOOL ? ? ? ? ? ? ? ?EnableAutoDepthStencil;// depth-stencil Buffer會自動設置為渲染目標,reset時自動重新創建
? D3DFORMAT ? ? ? ? ? AutoDepthStencilFormat;//CheckDepthStencilMatch的返回值
? DWORD ? ? ? ? ? ? ? Flags;//一般用D3DPRESENTFLAG__DISCARD_DEPTHSTENCIL
? UINT ? ? ? ? ? ? ? ?FullScreen_RefreshRateInHz;// FPS,窗口模式下必須為0(會添加),全屏模式是EnumAdapterModes返回值
? UINT ? ? ? ? ? ? ? ?PresentationInterval;//一般用D3DPRESENT_INTERVAL_DEFAULT也就是D3DPRESENT_INTERVAL_ONE
} D3DPRESENT_PARAMETERS,*LPD3DPRESENT_PARAMETERS;

按參數的定義,如果?presentParams.Windowed = true 則運行在窗口模式,如果為false則運行在全屏模式;改為false看一下;

? ? 提示出錯的語句是,

? ??device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);

看上去這句也沒什么可以改動的;如果把第三個參數改為null也是一樣的錯;

如果還是?presentParams.Windowed = true,并設置窗體的屬性為如下,

? ? 把TopMost設成true?
? ? 把FormBorderStyle設成none?
? ? 把WindowsState設Maximized?

則窗體會顯示為全屏;但可能還是有問題,下回再看;

總結

以上是生活随笔為你收集整理的C# DirectX编程设置全屏和PresentParameters参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。