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

            閱讀排行榜

            久久噜噜久久久精品66| 亚洲精品乱码久久久久久蜜桃不卡 | 精品乱码久久久久久久| 精品久久久久久无码专区| 久久99国产综合精品女同| 精品久久久久中文字| 久久无码中文字幕东京热| 久久久久亚洲AV无码永不| 久久性精品| 热久久国产精品| 亚洲国产欧洲综合997久久| 99久久精品免费国产大片| 女人高潮久久久叫人喷水| 狠狠色丁香久久婷婷综| 国内精品伊人久久久久妇| 伊人久久综合热线大杳蕉下载| 久久毛片一区二区| 国产精品一区二区久久精品无码| 少妇熟女久久综合网色欲| 久久国产美女免费观看精品| 69久久夜色精品国产69| 亚洲精品无码专区久久久| 久久久久国产精品嫩草影院| 久久免费国产精品一区二区| 久久青青草原精品国产| 久久国产色av免费看| 青青青青久久精品国产h久久精品五福影院1421 | 久久久久久亚洲精品无码| 成人资源影音先锋久久资源网| 亚洲午夜久久久久久久久电影网| 日本欧美国产精品第一页久久| 国内精品久久久久久中文字幕| 久久香蕉国产线看观看99| 2021久久国自产拍精品| 久久精品国产亚洲精品2020| 久久久久se色偷偷亚洲精品av| 久久这里只有精品视频99| 久久精品国产一区二区| 久久久久99精品成人片三人毛片| 国产伊人久久| 国产精品久久久久久久人人看|