• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            關(guān)于DirectX使用的一些注意事項(xiàng)

            1.關(guān)于創(chuàng)建Direct3D設(shè)備對(duì)象
               創(chuàng)建Direct3D設(shè)備對(duì)象時(shí),需要先創(chuàng)建Direct3D對(duì)象,然后再調(diào)用Direct3D對(duì)象的接口函數(shù)IDirect3D9::CreateDevice創(chuàng)建Direct3D設(shè)備對(duì)象。通過(guò)同一個(gè)Direct3D對(duì)象創(chuàng)建的所有Direct3D設(shè)備對(duì)象共享相同的物理資源(顯卡)。因?yàn)楣蚕硗挥布匀绻ㄟ^(guò)一個(gè)Direct3D對(duì)象創(chuàng)建多個(gè)Direct3D渲染設(shè)備對(duì)象會(huì)明顯降低系統(tǒng)性能。
               在創(chuàng)建Direct3D設(shè)備對(duì)象之前,還需要先初始化D3DPRESENT_PARAMENTERS結(jié)構(gòu),該結(jié)構(gòu)用于創(chuàng)建Direct3D設(shè)備對(duì)象。此結(jié)構(gòu)將會(huì)影響Direct3D設(shè)備的顯示方法。
                  

            D3DPRESENT_PARAMETERS

            Describes the presentation parameters.

            typedef struct D3DPRESENT_PARAMETERS {
                UINT BackBufferWidth, BackBufferHeight;
                D3DFORMAT BackBufferFormat;
                UINT BackBufferCount;
                D3DMULTISAMPLE_TYPE MultiSampleType;
                DWORD MultiSampleQuality;
                D3DSWAPEFFECT SwapEffect;
                HWND hDeviceWindow;
                BOOL Windowed;
                BOOL EnableAutoDepthStencil;
                D3DFORMAT AutoDepthStencilFormat;
                DWORD Flags;
                UINT FullScreen_RefreshRateInHz;
                UINT PresentationInterval;
            } D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;

            Members

            BackBufferWidth, BackBufferHeight
            Width and height of the new swap chain's back buffers, in pixels. If Windowed is FALSE (the presentation is full-screen), these values must equal the width and height of one of the enumerated display modes found through IDirect3D9::EnumAdapterModes. If Windowed is TRUE and either of these values is zero, the corresponding dimension of the client area of the hDeviceWindow (or the focus window, if hDeviceWindow is NULL) is taken.
            BackBufferFormat
            The back buffer format. For more information about formats, see D3DFORMAT. This value must be one of the render-target formats as validated by IDirect3D9::CheckDeviceType. You can use IDirect3DDevice9::GetDisplayMode to obtain the current format.

            In fact, D3DFMT_UNKNOWN can be specified for the BackBufferFormat while in windowed mode. This tells the runtime to use the current display-mode format and eliminates the need to call IDirect3DDevice9::GetDisplayMode.

            For windowed applications, the back buffer format no longer needs to match the display-mode format because color conversion can now be done by the hardware (if the hardware supports color conversion). The set of possible back buffer formats is constrained, but the runtime will allow any valid back buffer format to be presented to any desktop format. (There is the additional requirement that the device be operable in the desktop mode; devices typically do not operate in 8 bits per pixel modes.)

            Full-screen applications cannot do color conversion.

            BackBufferCount
            This value can be between 0 and D3DPRESENT_BACK_BUFFERS_MAX (or D3DPRESENT_BACK_BUFFERS_MAX_EX when using Direct3D 9Ex). Values of 0 are treated as 1. If the number of back buffers cannot be created, the runtime will fail the method call and fill this value with the number of back buffers that could be created. As a result, an application can call the method twice with the same D3DPRESENT_PARAMETERS structure and expect it to work the second time.

            The method fails if one back buffer cannot be created. The value of BackBufferCount influences what set of swap effects are allowed. Specifically, any D3DSWAPEFFECT_COPY swap effect requires that there be exactly one back buffer.

            MultiSampleType
            Member of the D3DMULTISAMPLE_TYPE enumerated type. The value must be D3DMULTISAMPLE_NONE unless SwapEffect has been set to D3DSWAPEFFECT_DISCARD. Multisampling is supported only if the swap effect is D3DSWAPEFFECT_DISCARD.
            MultiSampleQuality
            Quality level. The valid range is between zero and one less than the level returned by pQualityLevels used by IDirect3D9::CheckDeviceMultiSampleType. Passing a larger value returns the error D3DERR_INVALIDCALL. Paired values of render targets or of depth stencil surfaces and D3DMULTISAMPLE_TYPE must match.
            SwapEffect
            Member of the D3DSWAPEFFECT enumerated type. The runtime will guarantee the implied semantics concerning buffer swap behavior; therefore, if Windowed is TRUE and SwapEffect is set to D3DSWAPEFFECT_FLIP, the runtime will create one extra back buffer and copy whichever becomes the front buffer at presentation time.

            D3DSWAPEFFECT_COPY requires that BackBufferCount be set to 1.

            D3DSWAPEFFECT_DISCARD will be enforced in the debug runtime by filling any buffer with noise after it is presented.

            Differences between Direct3D9 and Direct3D9Ex

            In Direct3D9Ex, D3DSWAPEFFECT_FLIPEX is added to designate when an application is adopting flip mode. That is, whan an application's frame is passed in window's mode (instead of copied) to the Desktop Window Manager(DWM) for composition. Flip mode provides more efficient memory bandwidth and enables an application to take advantage of full-screen-present statistics. It does not change full screen behavior. Flip mode behavior is available beginning with Windows 7.

            hDeviceWindow
            The device window determines the location and size of the back buffer on screen. This is used by Direct3D when the back buffer contents are copied to the front buffer during IDirect3DDevice9::Present.
            • For a full-screen application, this is a handle to the top window (which is the focus window).

              For applications that use multiple full-screen devices (such as a multimonitor system), exactly one device can use the focus window as the device window. All other devices must have unique device windows.

            • For a windowed-mode application, this handle will be the default target window for IDirect3DDevice9::Present. If this handle is NULL, the focus window will be taken.

            Note that no attempt is made by the runtime to reflect user changes in window size. The back buffer is not implicitly reset when this window is reset. However, the IDirect3DDevice9::Present method does automatically track window position changes.

            Windowed
            TRUE if the application runs windowed; FALSE if the application runs full-screen.
            EnableAutoDepthStencil
            If this value is TRUE, Direct3D will manage depth buffers for the application. The device will create a depth-stencil buffer when it is created. The depth-stencil buffer will be automatically set as the render target of the device. When the device is reset, the depth-stencil buffer will be automatically destroyed and recreated in the new size.

            If EnableAutoDepthStencil is TRUE, then AutoDepthStencilFormat must be a valid depth-stencil format.

            AutoDepthStencilFormat
            Member of the D3DFORMAT enumerated type. The format of the automatic depth-stencil surface that the device will create. This member is ignored unless EnableAutoDepthStencil is TRUE.
            Flags
            One of the D3DPRESENTFLAG constants.
            FullScreen_RefreshRateInHz
            The rate at which the display adapter refreshes the screen. The value depends on the mode in which the application is running:
            • For windowed mode, the refresh rate must be 0.
            • For full-screen mode, the refresh rate is one of the refresh rates returned by IDirect3D9::EnumAdapterModes.
            PresentationInterval
            The maximum rate at which the swap chain's back buffers can be presented to the front buffer. For a detailed explanation of the modes and the intervals that are supported, see D3DPRESENT.

            Requirements

            Header: Declared in D3D9Types.h. 
                  幾個(gè)重要的參數(shù)加以解釋說(shuō)明一下,其中BackBufferWidth和BackBufferHeight指定后臺(tái)緩存區(qū)的寬高(以像素為單位)。如果圖形以窗口方式顯示并且該成員變量被設(shè)置為0,則系統(tǒng)自動(dòng)使用顯示窗口客戶(hù)區(qū)的寬高作為后臺(tái)緩沖區(qū)的寬高。BackBufferCount指定后臺(tái)緩沖區(qū)的數(shù)量。該值可以為0、1、2、3,其中0和1時(shí)都表示創(chuàng)建一個(gè)后臺(tái)緩沖區(qū)。通常使用一個(gè)后臺(tái)緩沖區(qū)和一個(gè)主緩存,主緩存將其顯示在屏幕上。

            posted on 2012-02-16 15:24 Daywei 閱讀(979) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): DirectX

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆分類(lèi)

            隨筆檔案

            文章檔案

            牛人博客

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            午夜精品久久久久| 久久精品无码一区二区app| 性做久久久久久久| 久久久久国产精品| 久久一区二区三区99| 久久精品无码午夜福利理论片 | 久久中文字幕精品| 久久精品国产亚洲AV无码偷窥| 色综合久久久久网| 精品多毛少妇人妻AV免费久久| 久久香蕉国产线看观看乱码| 久久成人小视频| 国产精品伦理久久久久久 | 久久午夜无码鲁丝片| 久久综合日本熟妇| 久久无码av三级| 精品国产乱码久久久久久郑州公司 | 国产激情久久久久影院小草| 亚洲色欲久久久综合网东京热| 久久e热在这里只有国产中文精品99| 久久伊人五月丁香狠狠色| 国产ww久久久久久久久久| 久久精品国产亚洲av高清漫画| 久久成人小视频| 亚洲精品无码专区久久同性男| 久久久久无码专区亚洲av| 亚洲国产精品久久久久久| 97久久精品午夜一区二区| 久久久久久久97| 久久这里只有精品18| 热re99久久6国产精品免费| 久久婷婷色香五月综合激情| 久久久久亚洲AV无码去区首| 国产福利电影一区二区三区,免费久久久久久久精 | 精品久久一区二区| 久久福利青草精品资源站| 久久99精品国产自在现线小黄鸭 | 国产成人精品久久一区二区三区av| 久久精品夜夜夜夜夜久久| 久久精品aⅴ无码中文字字幕不卡| 一本色道久久综合亚洲精品|