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

            C++ Programmer's Cookbook

            {C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

            Managed directx 檢查硬件支持和實(shí)現(xiàn)全屏顯示

            c#代碼:
            //-----------------------------------------------------------------------------
            //???????????Name:?dx9cs_fullscreen.cs
            //?????????Author:?Kevin?Harris
            //??Last?Modified:?06/15/05
            //????Description:?This?sample?demonstrates?how?to?probe?the?hardware?for?
            //?????????????????specific?Display?or?Adaptor?Modes?and?hardware?support?
            //?????????????????suitable?for?a?full-screen?application?with?Direct3D.
            //-----------------------------------------------------------------------------

            using?System;
            using?System.Drawing;
            using?System.Windows.Forms;
            using?Microsoft.DirectX;
            using?Microsoft.DirectX.Direct3D;

            namespace?DX9Sample
            {
            ????
            public?class?DX9Form?:?System.Windows.Forms.Form
            ????
            {
            ????????
            private?Device?d3dDevice?=?null;

            ????????
            public?DX9Form()
            ????????
            {
            ????????????
            this.ClientSize?=?new?System.Drawing.Size(?640,?480?);
            ????????????
            this.Text?=?"Direct3D?(DX9/C#)?-?Full?Screen";
            ????????????
            this.SetStyle(?ControlStyles.AllPaintingInWmPaint?|?ControlStyles.Opaque,?true?);
            ????????}


            ????????
            protected?override?void?OnPaint(System.Windows.Forms.PaintEventArgs?e)
            ????????
            {
            ????????????
            this.Render();
            ????????????
            this.Invalidate();
            ????????}


            ????????
            protected?override?void?OnKeyDown(System.Windows.Forms.KeyEventArgs?e)
            ????????
            {
            ????????????
            switch(?e.KeyCode?)
            ????????????
            {
            ????????????????
            case?System.Windows.Forms.Keys.Escape:
            ????????????????????
            this.Dispose();
            ????????????????????
            break;
            ????????????}

            ????????}


            ????????
            protected?override?void?Dispose(bool?disposing)
            ????????
            {
            ????????????
            base.Dispose(?disposing?);
            ????????}


            ????????
            static?void?Main()?
            ????????
            {
            ????????????
            using(?DX9Form?frm?=?new?DX9Form()?)
            ????????????
            {
            ????????????????frm.Show();
            ????????????????frm.Init();
            ????????????????Application.Run(?frm?);
            ????????????}

            ????????}


            ????????
            ///?<summary>
            ????????
            ///?This?method?basically?creates?and?initialize?the?Direct3D?device?and
            ????????
            ///?anything?else?that?doens't?need?to?be?recreated?after?a?device?
            ????????
            ///?reset.
            ????????
            ///?</summary>

            ????????private?void?Init()
            ????????
            {
            ????????????
            //
            ????????????
            //?For?each?adapter,?examine?all?of?its?display?modes?to?see?if?any?
            ????????????
            //?of?them?can?give?us?the?hardware?support?we?desire.
            ????????????
            //

            ????????????
            bool?desiredAdapterModeFound?=?false;

            ????????????
            //?For?each?Adapter
            ????????????foreach(?AdapterInformation?adapter?in?Manager.Adapters?)
            ????????????
            {
            ????????????????
            //?Examine?each?display?mode?available.
            ????????????????foreach(?DisplayMode?display?in?adapter.SupportedDisplayModes?)
            ????????????????
            {
            ????????????????????
            //?Does?this?adapter?mode?support?a?mode?of?640?x?480?
            ????????????????????if(?display.Width?!=?640?||?display.Height?!=?480?)
            ????????????????????????
            continue;

            ????????????????????
            //?Does?this?adapter?mode?support?a?32-bit?RGB?pixel?format?
            ????????????????????if(?display.Format?!=?Format.X8R8G8B8?)
            ????????????????????????
            continue;

            ????????????????????
            //?Does?this?adapter?mode?support?a?refresh?rate?of?75?MHz?
            ????????????????????if(?display.RefreshRate?!=?75?)
            ????????????????????????
            continue;

            ????????????????????
            //?We?found?a?match!
            ????????????????????desiredAdapterModeFound?=?true;
            ????????????????????
            break;
            ????????????????}

            ????????????}


            ????????????
            if(?desiredAdapterModeFound?==?false?)
            ????????????
            {
            ????????????????
            //?TO?DO:?Handle?lack?of?support?for?desired?adapter?mode
            ????????????????return;
            ????????????}


            ????????????
            //
            ????????????
            //?Here's?the?manual?way?of?verifying?hardware?support.
            ????????????
            //

            ????????????
            //?Can?we?get?a?32-bit?back?buffer?
            ????????????if(?!Manager.CheckDeviceType(?Manager.Adapters.Default.Adapter,?
            ??????????????????????????????????????????DeviceType.Hardware,
            ??????????????????????????????????????????Format.X8R8G8B8,
            ??????????????????????????????????????????Format.X8R8G8B8,
            ??????????????????????????????????????????
            false)?)
            ????????????
            {
            ????????????????
            //?TO?DO:?Handle?lack?of?support?for?a?32-bit?back?buffer
            ????????????????return;
            ????????????}


            ????????????
            //?Does?the?hardware?support?a?16-bit?z-buffer?
            ????????????if(?!Manager.CheckDeviceFormat(?Manager.Adapters.Default.Adapter,?
            ????????????????????????????????????????????DeviceType.Hardware,
            ????????????????????????????????????????????Manager.Adapters.Default.CurrentDisplayMode.Format,?
            ????????????????????????????????????????????Usage.DepthStencil,
            ????????????????????????????????????????????ResourceType.Surface,
            ????????????????????????????????????????????DepthFormat.D16?)?)
            ????????????
            {
            ????????????????
            //?POTENTIAL?PROBLEM:?We?need?at?least?a?16-bit?z-buffer!
            ????????????????return;
            ????????????}


            ????????????
            //
            ????????????
            //?Do?we?support?hardware?vertex?processing??if?so,?use?it.?
            ????????????
            //?If?not,?downgrade?to?software.
            ????????????
            //

            ????????????Caps?caps?
            =?Manager.GetDeviceCaps(?Manager.Adapters.Default.Adapter,?
            ???????????????????????????????????????????????DeviceType.Hardware?);
            ????????????CreateFlags?flags;

            ????????????
            if(?caps.DeviceCaps.SupportsHardwareTransformAndLight?)
            ????????????????flags?
            =?CreateFlags.HardwareVertexProcessing;
            ????????????
            else
            ????????????????flags?
            =?CreateFlags.SoftwareVertexProcessing;

            ????????????
            //
            ????????????
            //?Everything?checks?out?-?create?a?simple,?full-screen?device.
            ????????????
            //

            ????????????PresentParameters?d3dpp?
            =?new?PresentParameters();

            ????????????d3dpp.Windowed???????????????
            =?false;
            ????????????d3dpp.EnableAutoDepthStencil?
            =?true;
            ????????????d3dpp.AutoDepthStencilFormat?
            =?DepthFormat.D16;
            ????????????d3dpp.SwapEffect?????????????
            =?SwapEffect.Discard;
            ????????????d3dpp.BackBufferWidth????????
            =?640;
            ????????????d3dpp.BackBufferHeight???????
            =?480;
            ????????????d3dpp.BackBufferFormat???????
            =?Format.X8R8G8B8;
            ????????????d3dpp.PresentationInterval???
            =?PresentInterval.Immediate;?

            ????????????d3dDevice?
            =?new?Device(?0,?DeviceType.Hardware,?this,?flags,?d3dpp?);

            ????????????
            //?Register?an?event-handler?for?DeviceReset?and?call?it?to?continue
            ????????????
            //?our?setup.
            ????????????d3dDevice.DeviceReset?+=?new?System.EventHandler(?this.OnResetDevice?);
            ????????????OnResetDevice(?d3dDevice,?
            null?);
            ????????}


            ????????
            ///?<summary>
            ????????
            ///?This?event-handler?is?a?good?place?to?create?and?initialize?any?
            ????????
            ///?Direct3D?related?objects,?which?may?become?invalid?during?a?
            ????????
            ///?device?reset.
            ????????
            ///?</summary>

            ????????public?void?OnResetDevice(object?sender,?EventArgs?e)
            ????????
            {
            ????????????
            //?This?sample?doens't?create?anything?that?requires?recreation?
            ????????????
            //?after?the?DeviceReset?event.
            ????????}


            ????????
            private?void?Render()
            ????????
            {
            ????????????d3dDevice.Clear(?ClearFlags.Target?
            |?ClearFlags.ZBuffer,?
            ?????????????????????????????Color.FromArgb(
            255,?0,?255,?0),?1.0f,?0?);

            ????????????d3dDevice.BeginScene();
            ????????????
            ????????????
            //?Render?geometry?here
            ????
            ????????????d3dDevice.EndScene();

            ????????????d3dDevice.Present();
            ????????}

            ????}

            }

            posted on 2006-06-22 16:08 夢(mèng)在天涯 閱讀(947) 評(píng)論(1)  編輯 收藏 引用 所屬分類: DirectX

            評(píng)論

            # re: Managed directx 檢查硬件支持和實(shí)現(xiàn)全屏顯示 2010-06-08 17:43 ascu

            您好,我拜讀完您的文章,有些問題想請(qǐng)教,因?yàn)樽罱鯇W(xué)DirectX,而且需要用它來做個(gè)東西。首先我的問題是您的那個(gè)檢查硬件支持是檢查哪個(gè)方面的支持,為什么我運(yùn)行此程序,他最后返回的是無(wú)硬件支持,即desiredAdapterModeFound == false,所以,我只能將其強(qiáng)制設(shè)置true,最后可以也可以正常運(yùn)行,所以我想問檢查硬件有什么用。還有一個(gè)問題,具體的內(nèi)容我在百度問了個(gè)問題http://zhidao.baidu.com/question/158001103.html麻煩您看一下,我很急需去解決這個(gè)問題,先謝謝您了。  回復(fù)  更多評(píng)論   

            公告

            EMail:itech001#126.com

            導(dǎo)航

            統(tǒng)計(jì)

            • 隨筆 - 461
            • 文章 - 4
            • 評(píng)論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1807577
            • 排名 - 5

            最新評(píng)論

            閱讀排行榜

            国产亚洲精午夜久久久久久| 国产综合免费精品久久久| 人人狠狠综合88综合久久| 欧美性大战久久久久久| 久久久久人妻一区精品性色av| 久久影院综合精品| 狠狠精品干练久久久无码中文字幕| 99久久精品这里只有精品| 久久亚洲国产精品成人AV秋霞| 狠狠色婷婷久久一区二区三区 | 久久中文字幕视频、最近更新 | 欧美性猛交xxxx免费看久久久| 久久精品日日躁夜夜躁欧美| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久精品青青草原伊人| 99久久无码一区人妻a黑| 久久无码国产| 国产精品免费久久久久久久久| 色欲久久久天天天综合网| 久久天天躁狠狠躁夜夜2020老熟妇 | 久久亚洲AV永久无码精品| 久久综合久久自在自线精品自| 青青热久久国产久精品| 亚洲一区二区三区日本久久九| 国产成人久久AV免费| 一本久道久久综合狠狠爱| 亚洲欧美久久久久9999| 亚洲成av人片不卡无码久久| 99久久精品国产一区二区三区 | 亚洲欧美另类日本久久国产真实乱对白| 丰满少妇人妻久久久久久| 欧洲成人午夜精品无码区久久| 久久天天婷婷五月俺也去| 欧美午夜A∨大片久久 | 久久精品国产亚洲Aⅴ香蕉| 青青青青久久精品国产h| 四虎国产精品免费久久5151| 久久综合九色综合精品| 精品久久久久久久中文字幕| 九九热久久免费视频| 麻豆久久久9性大片|