Подскажите, пожалуйста, где я накосячил?
Проблема вот в чем:
плагин должен писать текст над радаром, он пишет, все правильно, но есть один "побочный эффект", сильно падает фпс. Без этого плагина фпс около 50-60, с плагином - 10-15.
В чем проблемка?
P.S.: если сделать такой же код на клео, то все будет работать отлично и ФПС падать не будет
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS *SF = new SAMPFUNCS();
bool stage = true;
void CALLBACK ctime(std::string)
{
if (stage)
{
stage = false;
}
else
{
stage = true;
}
return;
}
bool CALLBACK Present ()
{
if (SUCCEEDED(SF->getRender()->BeginRender()))
{
stFontInfo *pFont;
pFont = SF->getRender()->CreateNewFont("Arial", 9, 13);
pFont->Print("qqqq", -1, 140, 727, false);
SF->getRender()->EndRender();
};
return true;
};
void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (GAME == nullptr)
return;
if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
return;
if (!SF->getSAMP()->IsInitialized())
return;
SF->getSAMP()->registerChatCommand("ctime", ctime);
SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
init = true;
}
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
switch (dwReasonForCall)
{
case DLL_PROCESS_ATTACH:
SF->initPlugin(mainloop, hModule);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}