А еще потрахайся с синхронизацией потоков, хороший совет.в отдельном потоке отрисовывай всё в какую-то текстуру, а потом рендерь текстуру
Можно какой-нибудь пример, как рисовать линии на текстуре, а затем выводить текстуру?в отдельном потоке отрисовывай всё в какую-то текстуру, а потом рендерь текстуру
Я, конечно, ни на что не намекаю, но..Вечером смогу код скинуть, как я давным давно делал без дропа фпса.
матрицы похерил. Если не хочешь менять место хука, то сохраняй их, но это ударит по fpsПарни, почему когда я рисую текстуру на экране у меня ники людей улетают в лево вверх?
класс для рисования - https://guidedhacking.com/threads/dx9-image-class.7620/
менять место хука это как?матрицы похерил. Если не хочешь менять место хука, то сохраняй их, но это ударит по fps
пасибоматрицы похерил. Если не хочешь менять место хука, то сохраняй их, но это ударит по fps
DWORD FindDevice(DWORD dwLen)
{
DWORD dwObjBase = (DWORD)LoadLibraryA("d3d9.dll");
if (dwObjBase == 0x0)
return 0x0;
while (dwObjBase++ < dwObjBase + dwLen)
{
if ((*(WORD*)(dwObjBase + 0x00)) == 0x06C7 && (*(WORD*)(dwObjBase + 0x06)) == 0x8689 && (*(WORD*)(dwObjBase + 0x0C)) == 0x8689)
{
dwObjBase += 2;
break;
}
}
return dwObjBase;
};
bool initD3DRes()
{
DWORD* VTable;
*(DWORD*)&VTable = *(DWORD *)FindDevice(0x128000);
DWORD VP16, VP17;
VirtualProtect((LPVOID)&VTable[16], 4, PAGE_READWRITE, &VP16);
VirtualProtect((LPVOID)&VTable[17], 4, PAGE_READWRITE, &VP17);
vars::oReset = (tReset)VTable[16];
vars::oPresent = (tPresent)VTable[17];
VTable[16] = (DWORD)hkReset;
VTable[17] = (DWORD)hkPresent;
VirtualProtect((LPVOID)&VTable[16], 4, VP16, &VP16);
VirtualProtect((LPVOID)&VTable[17], 4, VP17, &VP17);
return true;
}
void destD3DRes()
{
DWORD* VTable;
*(DWORD*)&VTable = *(DWORD*)FindDevice(0x128000);
DWORD VP16, VP17;
VirtualProtect((LPVOID)&VTable[16], 4, PAGE_READWRITE, &VP16);
VirtualProtect((LPVOID)&VTable[17], 4, PAGE_READWRITE, &VP17);
VTable[16] = (DWORD)vars::oReset;
VTable[17] = (DWORD)vars::oPresent;
VirtualProtect((LPVOID)&VTable[16], 4, VP16, &VP16);
VirtualProtect((LPVOID)&VTable[17], 4, VP17, &VP17);
}
Парни, почему когда я рисую текстуру на экране у меня ники людей улетают в лево вверх?
А почему тот хук который я скинул (он не мой) не вызывает такой эффект?Ломается рендер сампа
Ну тут расписывать много не надо. Как только начинаешь выводить на экран текст - преобразования Мировых координат в экранные будто резко перестают работать. А происходит вот такая дичь(смотреть в левый верхний угол. На белую полосу не обращайте внимания, приколы оконного режима):www.blast.hk
Он хукает саму библиотеку, и по сути является последним в цепочке рендераА почему тот хук который я скинул (он не мой) не вызывает такой эффект?
Я, конечно, ни на что не намекаю, но..
float FXT[2048];
int _lines = 25;
BASS_ChannelGetData(curTrack, FXT, BASS_DATA_FFT1024);
int _x1, _y1;
int b0 = 0;
for (_x1 = 0; _x1 < _lines; _x1++)
{
float peak = 0;
int b1 = (int)pow(2, _x1 * 10.0 / (_lines - 1));
if (b1 > 511) b1 = 511;
if (b1 <= b0) b1 = b0 + 1;
for (; b0 < b1; b0++) {
if (peak < FXT[1 + b0])
peak = FXT[1 + b0];
}
_y1 = (int)(sqrt(peak) * 3 * 65 - 4);
if (_y1 > 70)
_y1 = 70;
if (_y1 < 0)
_y1 = 0;
int _x2 = (int)setting.Pos.fX + 150 + (5 * _x1 + 2 * _x1) - 13 * 2 - 40;
int _y2 = (int)setting.Pos.fY + (int)setting.fTime->DrawHeight() + (int)setting.fSong->DrawHeight() + hHeader + 100 - 19;
render->DrawBox(_x2, _y2 - _y1, 5, _y1, setting.mColor);
}
Ничем мне это не помогло. Мне интереснее, как создавать и формировать текстуру в другом потоке, а затем просто рендерить еёC++:float FXT[2048]; int _lines = 25; BASS_ChannelGetData(curTrack, FXT, BASS_DATA_FFT1024); int _x1, _y1; int b0 = 0; for (_x1 = 0; _x1 < _lines; _x1++) { float peak = 0; int b1 = (int)pow(2, _x1 * 10.0 / (_lines - 1)); if (b1 > 511) b1 = 511; if (b1 <= b0) b1 = b0 + 1; for (; b0 < b1; b0++) { if (peak < FXT[1 + b0]) peak = FXT[1 + b0]; } _y1 = (int)(sqrt(peak) * 3 * 65 - 4); if (_y1 > 70) _y1 = 70; if (_y1 < 0) _y1 = 0; int _x2 = (int)setting.Pos.fX + 150 + (5 * _x1 + 2 * _x1) - 13 * 2 - 40; int _y2 = (int)setting.Pos.fY + (int)setting.fTime->DrawHeight() + (int)setting.fSong->DrawHeight() + hHeader + 100 - 19; render->DrawBox(_x2, _y2 - _y1, 5, _y1, setting.mColor); }
забудь об этом, это бредНичем мне это не помогло. Мне интереснее, как создавать и формировать текстуру в другом потоке, а затем просто рендерить её
Жаль. На моём старом компе это не вызывало никаких дроповНичем мне это не помогло. Мне интереснее, как создавать и формировать текстуру в другом потоке, а затем просто рендерить её