Низкий FPS с DirectX 9? - PullRequest
       22

Низкий FPS с DirectX 9?

0 голосов
/ 24 июня 2019

У меня есть инструмент DirectX 9, который создает внешний оверлей для игры.

Но по любой причине у меня есть только 10-15 FPS с этим инструментом DirectX 9, в то время как в игре 150 FPS.

Мой компьютер более чем хорош с RTX 2080 Ti и чем-то еще, так что проблем на самом деле нет.

Я также тестировал Benchmarks с DirectX 9, там у меня также более 150 FPS.

Это мой Create Directx 9.

            using namespace d3d9;
    auto d3d_ = Direct3DCreate9(D3D_SDK_VERSION);
    D3DPRESENT_PARAMETERS d3dpp;

    ZeroMemory(&d3dpp, sizeof(d3dpp));
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.hDeviceWindow = hwnd;
    d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
    d3dpp.BackBufferWidth = screen_width;
    d3dpp.BackBufferHeight = screen_height;
    d3dpp.EnableAutoDepthStencil = TRUE;
    d3dpp.AutoDepthStencilFormat = D3DFMT_D16;

    d3d_->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &dx9_device);

Кто-нибудь видел что-то не так или имел представление, почему у него такой низкий fps?

Вот код рендеринга и нарисуйте текст

rendering::c_renderer::get()->draw_string(w2s.x, w2s.y, d3d9::tahoma_bold_18, D3DCOLOR_RGBA(51, 204, 51, 255), DT_CENTER, false, namee.c_str());

void c_renderer::draw_string(float x, float y, LPD3DXFONT pFont, D3DCOLOR color, int flags, bool outline, std::wstring text, ...) {
    va_list va_alist;
    wchar_t buf[1024];
    va_start(va_alist, text);
    _vsnwprintf(buf, sizeof(buf), text.c_str(), va_alist);
    va_end(va_alist);

    RECT rect;
    if (outline) {
        auto alpha = ((color >> 24) & 255);
        SetRect(&rect, x - 1, y, x - 1, y);
        pFont->DrawTextW(NULL, buf, -1, &rect, flags | DT_NOCLIP, D3DCOLOR_RGBA(0, 0, 0, alpha));
        SetRect(&rect, x + 1, y, x + 1, y);
        pFont->DrawTextW(NULL, buf, -1, &rect, flags | DT_NOCLIP, D3DCOLOR_RGBA(0, 0, 0, alpha));
        SetRect(&rect, x, y - 1, x, y - 1);
        pFont->DrawTextW(NULL, buf, -1, &rect, flags | DT_NOCLIP, D3DCOLOR_RGBA(0, 0, 0, alpha));
        SetRect(&rect, x, y + 1, x, y + 1);
        pFont->DrawTextW(NULL, buf, -1, &rect, flags | DT_NOCLIP, D3DCOLOR_RGBA(0, 0, 0, alpha));
    }
    SetRect(&rect, x, y, x, y);
    pFont->DrawTextW(NULL, buf, -1, &rect, flags | DT_NOCLIP, color);
}
...