• <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>

            天行健 君子當自強而不息

            DXUT框架剖析(7)

            (2)幀事件

            框架也提供了幀事件,它在渲染過程中的每一幀被調用,應用程序應該注冊并實現這些回調函數,如下表所示:

            應用程序回調函數 注冊回調函數 框架調用時機 場景渲染
            LPDXUTCALLBACK-
            FRAMEMOVE
            DXUTSetCallback-
            FrameMove
            在每一幀開始時調用一次 這個回調函數是應用程序處理場景更新的最好位置,但它不應包括實際的渲染調用,渲染調用應放在幀渲染回調函數中。
            LPDXUTCALLBACK-
            D3D9FRAMERENDER
            DXUTSetCallback-
            D3D9FrameRender
            在每一幀結束或窗口需要重畫時調用 所有對場景的渲染調用都應在此回調函數中完成,在這個回調函數返回后,框架將調用Present()來顯示交換鏈中下一緩沖區的內容。


             

            DXUTSetCallbackFrameMove

            Sets the frame update callback function.

             VOID DXUTSetCallbackFrameMove( 
            LPDXUTCALLBACKFRAMEMOVE pCallbackFrameMove ,
            void* pUserContext
            ) ;

            Parameters

            pCallbackFrameMove
            [in] Pointer to a LPDXUTCALLBACKFRAMEMOVE callback function. If the callback function is supplied, it will be called at the beginning of every frame to facilitate updates to the scene. If NULL, DXUT will not notify the application about new frames.
            pUserContext
            [in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

            Return Values

            No return value.

            Remarks

            The LPDXUTCALLBACKFRAMEMOVE callback function is the appropriate location for the application to handle updates to the scene. However, LPDXUTCALLBACKFRAMEMOVE is not intended to contain actual rendering calls, which should instead be placed in the LPDXUTCALLBACKD3D9FRAMERENDER or LPDXUTCALLBACKD3D10FRAMERENDER callback function. These callbacks is called when rendering with either Direct3D 9 or Direct3D 10 respectively.

            The LPDXUTCALLBACKFRAMEMOVE callback function will be called once per frame, while the render callback function will be called whenever the scene needs to be rendered, which might be more than once per frame on rare occasion if a WM_PAINT message occurs.


             

            LPDXUTCALLBACKFRAMEMOVE

            Application-defined callback function that allows for updating the scene. This function is called by DXUT once each frame, before the application renders the scene.

             VOID LPDXUTCALLBACKFRAMEMOVE( 
            DOUBLE fTime ,
            FLOAT fElapsedTime ,
            void* pUserContext
            ) ;

            Parameters

            fTime
            [in] Time elapsed since the application started, in seconds.
            fElapsedTime
            [in] Time elapsed since the last frame, in seconds.
            pUserContext
            [in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

            Return Values

            No return value.

            Remarks

            The LPDXUTCALLBACKFRAMEMOVE callback function is the appropriate location for the application to handle updates to the scene. However, LPDXUTCALLBACKFRAMEMOVE is not intended to contain actual rendering calls, which should instead be placed in the LPDXUTCALLBACKD3D9FRAMERENDER or LPDXUTCALLBACKD3D10FRAMERENDER callback function. These callbacks is called when rendering with either Direct3D 9 or Direct3D 10 respectively.

            The LPDXUTCALLBACKFRAMEMOVE callback function will be called once per frame, while the render callback function will be called whenever the scene needs to be rendered, which might be more than once per frame on rare occasion if a WM_PAINT message occurs.


             

            DXUTSetCallbackD3D9FrameRender

            Sets the Direct3D 9 frame render callback function.

             VOID DXUTSetCallbackD3D9FrameRender( 
            LPDXUTCALLBACKD3D9FRAMERENDER pCallback ,
            void* pUserContext
            ) ;

            Parameters

            pCallback
            [in] Pointer to a LPDXUTCALLBACKD3D9FRAMERENDER callback function. If the callback function is supplied, it will be called once per frame for the application to render the current scene using the Direct3D 9 device. If NULL, DXUT will not prompt the application to render the scene.
            pUserContext
            [in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

            Return Values

            No return value.

            Remarks

            This function only needs to be called if the application supports rendering with Direct3D 9 device.

            The LPDXUTCALLBACKD3D9FRAMERENDER callback function is the appropriate location for the application to render the current scene using the Direct3D 9 device. The LPDXUTCALLBACKFRAMEMOVE callback function will be called once per frame, while LPDXUTCALLBACKD3D9FRAMERENDER will be called when the scene needs to be rendered, which might be more than once per frame.


             

            LPDXUTCALLBACKD3D9FRAMERENDER

            Application-defined callback function that allows for rendering the scene using a Direct3D 9 device. This function is called by DXUT at the end of every frame, and whenever the application needs to paint the scene.

             VOID LPDXUTCALLBACKD3D9FRAMERENDER( 
            IDirect3DDevice9 * pd3dDevice ,
            DOUBLE fTime ,
            FLOAT fElapsedTime ,
            void* pUserContext
            ) ;

            Parameters

            pd3dDevice
            [in] Pointer to the Direct3D 9 device used for rendering.
            fTime
            [in] Time elapsed since the application started, in seconds.
            fElapsedTime
            [in] Time elapsed since the last frame, in seconds.
            pUserContext
            [in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

            Return Values

            No return value.

            Remarks

            The LPDXUTCALLBACKD3D9FRAMERENDER callback function is the appropriate location for the application to render the current scene using the Direct3D 9 device. The LPDXUTCALLBACKFRAMEMOVE callback function will be called once per frame, while LPDXUTCALLBACKD3D9FRAMERENDER will be called when the scene needs to be rendered, which might be more than once per frame.

            DXUT will call this function after the LPDXUTCALLBACKFRAMEMOVE callback function.

            在函數 LPDXUTCALLBACKFRAMEMOVE 中,通常進行數據變換,比如設置坐標變換矩陣。在函數 LPDXUTCALLBACKD3D9FRAMERENDER 中,主要進行圖形的渲染,類似于Direct3D API中的Render()函數。

             

            (3)消息事件

            框架通過下表中的回調函數和相應的注冊函數來傳遞窗口消息、鍵盤事件和鼠標事件,編寫應用程序對這些事件做出適當反應。

            應用程序回調函數 注冊回調函數 描述
            LPDXUTCALLBACKMSGPROC DXUTSetCallbackMsgProc 處理來自DXUT消息泵的窗口消息
            LPDXUTCALLBACKKEYBOARD DXUTSetCallbackKeyboard 處理來自DXUT消息泵的鍵盤事件
            LPDXUTCALLBACKMOUSE DXUTSetCallbackMouse 處理來自DXUT消息泵的鼠標事件


             

            DXUTSetCallbackKeyboard

            Sets the keyboard event callback function.

             VOID DXUTSetCallbackKeyboard( 
            LPDXUTCALLBACKKEYBOARD pCallbackKeyboard ,
            void* pUserContext
            ) ;

            Parameters

            pCallbackKeyboard
            [in] Pointer to a LPDXUTCALLBACKKEYBOARD keyboard event callback function. If supplied, the callback function will be called for keyboard events. If NULL, DXUT will not notify the application about keyboard events.
            pUserContext
            [in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

            Return Values

            No return value.

            Remarks

            The pCallbackKeyboard keyboard event callback function will be called when any keyboard event occurs.

            This callback mechanism is provided to simplify handling keyboard messages through the windows message pump, but does not preclude the application from handling those messages directly through the LPDXUTCALLBACKMSGPROC callback.


             

            LPDXUTCALLBACKKEYBOARD

            Application-defined keyboard event callback function, called by DXUT.

             VOID LPDXUTCALLBACKKEYBOARD( 
            UINT nChar ,
            bool bKeyDown ,
            bool bAltDown ,
            void* pUserContext
            ) ;

            Parameters

            nChar
            [in] A virtual-key code for the key. See Virtual-Key Codes for a listing.
            bKeyDown
            [in] TRUE if key is down. FALSE if the key is up
            bAltDown
            [in] TRUE if the ALT key is also down.
            pUserContext
            [in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

            Return Values

            No return value.

            Remarks

            The pCallbackKeyboard keyboard event callback function will be called when any keyboard event occurs.

            This callback mechanism is provided to simplify handling keyboard messages through the windows message pump, but does not preclude the application from handling those messages directly through the LPDXUTCALLBACKMSGPROC callback.


             

            DXUTSetCallbackMouse

            Sets the mouse event callback function.

             VOID DXUTSetCallbackMouse( 
            LPDXUTCALLBACKMOUSE pCallbackMouse ,
            BOOL bIncludeMouseMove ,
            void* pUserContext
            ) ;

            Parameters

            pCallbackMouse
            [in] Pointer to an LPDXUTCALLBACKMOUSE mouse event callback function. If supplied, the callback function will be called for mouse events. If NULL, DXUT will not notify the application about mouse events.
            bIncludeMouseMove
            [in] If TRUE, the mouse movement events are passed to the pCallbackMouse callback function. Default value is FALSE.
            pUserContext
            [in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

            Return Values

            No return value.

            Remarks

            The pCallbackMouse mouse event callback function will be called when any mouse events occurs

            This callback mechanism is provided to simplify handling mouse messages through the Windows message pump, but does not preclude the application from handling those messages directly in the LPDXUTCALLBACKMSGPROC callback function.


             

            LPDXUTCALLBACKMOUSE

            Application-defined mouse event callback function, called by DXUT when it receives mouse events.

             VOID LPDXUTCALLBACKMOUSE( 
            bool bLeftButtonDown ,
            bool bRightButtonDown ,
            bool bMiddleButtonDown ,
            bool bSideButton1Down ,
            bool bSideButton2Down ,
            INT nMouseWheelDelta ,
            INT xPos ,
            INT yPos ,
            void* pUserContext
            ) ;

            Parameters

            bLeftButtonDown
            [in] The left mouse button is down.
            bRightButtonDown
            [in] The right mouse button is down.
            bMiddleButtonDown
            [in] The middle mouse button is down.
            bSideButton1Down
            [in] Windows 2000/Windows XP: The first side button is down.
            bSideButton2Down
            [in] Windows 2000/Windows XP: The second side button is down.
            nMouseWheelDelta
            [in] The distance and direction the mouse wheel has rolled, expressed in multiples or divisions of WHEEL_DELTA, which is 120. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user.
            xPos
            [in] x-coordinate of the pointer, relative to the upper-left corner of the client area.
            yPos
            [in] y-coordinate of the pointer, relative to the upper-left corner of the client area.
            pUserContext
            [in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

            Return Values

            No return value.

            Remarks

            The pCallbackMouse mouse event callback function will be called when any mouse events occurs

            This callback mechanism is provided to simplify handling mouse messages through the Windows message pump, but does not preclude the application from handling those messages directly in the LPDXUTCALLBACKMSGPROC callback function.


            posted on 2008-05-15 18:10 lovedday 閱讀(1372) 評論(0)  編輯 收藏 引用

            公告

            導航

            統計

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關鏈接

            搜索

            最新評論

            99久久精品影院老鸭窝| 国产精品久久国产精品99盘 | 国产精品亚洲综合久久| 模特私拍国产精品久久| 影音先锋女人AV鲁色资源网久久| 综合人妻久久一区二区精品| 久久青青草原国产精品免费| 亚洲伊人久久综合影院| 97久久超碰成人精品网站| 久久精品不卡| 97久久综合精品久久久综合| 亚洲伊人久久综合影院| 日本道色综合久久影院| 欧美牲交A欧牲交aⅴ久久 | 久久久91人妻无码精品蜜桃HD| 精品久久久久久无码不卡| 香蕉久久一区二区不卡无毒影院| 久久国产劲爆AV内射—百度| 久久久久亚洲AV成人网| 秋霞久久国产精品电影院| 久久精品黄AA片一区二区三区| 亚洲国产一成久久精品国产成人综合 | 中文字幕亚洲综合久久| 亚洲国产精品无码久久| 婷婷久久精品国产| 久久青青草原亚洲av无码| Xx性欧美肥妇精品久久久久久 | 久久人人爽人人爽AV片| 久久99精品国产麻豆不卡| 久久无码av三级| 伊人丁香狠狠色综合久久| 久久国产免费观看精品| 久久久久亚洲av无码专区喷水| 精品久久久久久国产| 国产精品99久久久精品无码| 亚洲精品无码久久久久| 亚洲国产精品无码久久| 久久精品人人做人人爽电影蜜月| 久久人人爽人人爽人人AV东京热 | 久久狠狠色狠狠色综合| 亚洲国产精品久久久久网站|