我有一个DirectX 9工具,可为游戏创建一个外部覆盖。
但是出于任何原因,我使用DirectX 9工具的速度只有大约10-15 FPS,而游戏只有150 FPS。
我的PC配备了RTX 2080 Ti和其他功能,因此表现不俗。
我还用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);
}