0

マウス入力を継続的にキャプチャした後。左クリックと右クリック、Google Chrome などの別のソフトウェアに切り替えると PC が非常に遅くなりますが、数秒間フレームワークを終了すると、ラグなしで通常の状態に戻ります。

Graphics オブジェクトを作成するまで、フレームワークは正常に動作します。したがって、Graphics クラスに問題があるとは思えませんが、このパフォーマンスの問題を引き起こしている部分はまだわかりません。

グラフィックス クラス

Graphics.h

#ifndef GRAPHICS_H
#define GRAPHICS_H

#include <d3d9.h>

class Graphics
{
public:
    Graphics();
    ~Graphics();
    void initialize(HWND hWnd, int backBufferWidth, int backBufferHeight);
    void BeginFrame();
    void EndFrame();

private:
    IDirect3D9*       direct3D9;
    IDirect3DDevice9* d3dDevice;
};

#endif

グラフィックス.cpp

#include "Graphics.h"

Graphics::Graphics()
{
}

Graphics::~Graphics()
{
    //  Release the device when exiting.
    d3dDevice->Release();
    //  Reset pointer to NULL.
    d3dDevice = NULL;
}

void Graphics::initialize(HWND hWnd, int backBufferWidth, int backBufferHeight)
{
    //  Define Direct3D 9.
    direct3D9 = Direct3DCreate9(D3D_SDK_VERSION);

    //  Define how the screen presents.
    D3DPRESENT_PARAMETERS d3dPP;
    ZeroMemory(&d3dPP, sizeof(d3dPP));

    d3dPP.Windowed           = true;
    d3dPP.SwapEffect         = D3DSWAPEFFECT_DISCARD;
    d3dPP.BackBufferFormat   = D3DFMT_X8R8G8B8;
    d3dPP.BackBufferCount    = 1;
    d3dPP.BackBufferWidth    = backBufferWidth;
    d3dPP.BackBufferHeight   = backBufferHeight;
    d3dPP.hDeviceWindow      = hWnd;

    //  Create a Direct3D 9 device.
    direct3D9->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, 
    D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dPP, &d3dDevice);
}

void Graphics::BeginFrame()
{
    //  Clear the back buffer.
    d3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);

    //  Begin the scene
    d3dDevice->BeginScene();
}

void Graphics::EndFrame()
{
    //  End the scene
    d3dDevice->EndScene();

    //  Present the back buffer to screen
    d3dDevice->Present(NULL, NULL, NULL, NULL);
}

すべてのコードを確認したい場合は、私のプロジェクト全体を以下に示します: https://www.dropbox.com/s/p4nm57fzqse12t7/Zero%20DirectX%20Framework.rar

4

0 に答える 0