游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1242|回复: 0

780G hd3200上D3D的问题 。急!!!在线等。。

[复制链接]

15

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2009-1-24 10:59:00 | 显示全部楼层 |阅读模式
大家好,过年回家,抽空写写程序,碰到个很郁闷的问题。求助。。。

问题描述:
    我写好程序跑起来发现FPS只有2帧/S,后来查原因,找了个翁云兵书上的例子,发现也只有2帧/S。然后怀疑是驱动问题,但是跑跑Microsoft DirectX SDK (November 2008)的sample,都没问题,FPS基本都在90以上,所以怀疑是我初始化D3D的问题,请各位达达给看看。代码如下:
//
// Init D3D:
//

        HRESULT hr = 0;

        // Step 1: Create the IDirect3D9 object.

        IDirect3D9* d3d9 = 0;
        d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

        if( !d3d9 )
        {
                ::MessageBox(0, "Direct3DCreate9() - FAILED", 0, 0);
                return false;
        }

        // Step 2: Check for hardware vp.

        D3DCAPS9 caps;
        d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, deviceType, &caps);

        int vp = 0;
        if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
                vp = D3DCREATE_HARDWARE_VERTEXPROCESSING;
        else
                vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING;

        // Step 3: Fill out the D3DPRESENT_PARAMETERS structure.

        D3DPRESENT_PARAMETERS d3dpp;
        d3dpp.BackBufferWidth            = width;
        d3dpp.BackBufferHeight           = height;
        d3dpp.BackBufferFormat           = D3DFMT_A8R8G8B8;
        d3dpp.BackBufferCount            = 1;
        d3dpp.MultiSampleType            = D3DMULTISAMPLE_NONE;
        d3dpp.MultiSampleQuality         = 0;
        d3dpp.SwapEffect                 = D3DSWAPEFFECT_DISCARD;
        d3dpp.hDeviceWindow              = hwnd;
        d3dpp.Windowed                   = windowed;
        d3dpp.EnableAutoDepthStencil     = true;
        d3dpp.AutoDepthStencilFormat     = D3DFMT_D24S8;
        d3dpp.Flags                      = 0;
        d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
        d3dpp.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;

        // Step 4: Create the device.

        hr = d3d9->CreateDevice(
                D3DADAPTER_DEFAULT, // primary adapter
                deviceType,         // device type
                hwnd,               // window associated with device
                vp,                 // vertex processing
            &d3dpp,             // present parameters
            device);            // return created device

        if( FAILED(hr) )
        {
                // try again using a 16-bit depth buffer
                d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
               
                hr = d3d9->CreateDevice(
                        D3DADAPTER_DEFAULT,
                        deviceType,
                        hwnd,
                        vp,
                        &d3dpp,
                        device);

                if( FAILED(hr) )
                {
                        d3d9->Release(); // done with d3d9 object
                        ::MessageBox(0, "CreateDevice() - FAILED", 0, 0);
                        return false;
                }
        }

        d3d9->Release(); // done with d3d9 object


// Draw:
        Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff000000, 1.0f, 0);
        Device->BeginScene();

        Device->EndScene();
        Device-&gtresent(0, 0, 0, 0);

Draw里什么也不做,FPS就只有2帧。。。帮忙看看是什么问题啊,先谢谢了,在线等。。。

显卡:集成HD3200,vs2005, sdk:d3d9 November 2008
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 11:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表