Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

World2Screen Func Lagz

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
13 Июл 2017
Сообщения
223
Реакции
116
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем здрасьте. Столкнулся с таким мемом у W2S.
Как это лечится и из за чего возникает? Что собственно говоря неправильно?
Сама W2S функция:

Код:
Expand Collapse Copy
bool DrawManager::WorldToScreen(Vector vOrigin, Vector &vScreen)
{
    static uintptr_t clientDll = 0;
    while (!clientDll) { clientDll = (uintptr_t)GetModuleHandle(L"client.dll"); Sleep(100); }

    float w = g::viewMatrix[3][0] * vOrigin.x + g::viewMatrix[3][1] * vOrigin.y + g::viewMatrix[3][2] * vOrigin.z + g::viewMatrix[3][3];

    float ScreenWidth = (float)this->viewPort.Width;
    float ScreenHeight = (float)this->viewPort.Height;

    if (w > 0.01)
    {
        float inverseWidth = 1 / w;
        vScreen.x = (float)((ScreenWidth / 2) + (0.5 * ((g::viewMatrix[0][0] * vOrigin.x + g::viewMatrix[0][1] * vOrigin.y + g::viewMatrix[0][2] * vOrigin.z + g::viewMatrix[0][3]) * inverseWidth) * ScreenWidth + 0.5));
        vScreen.y = (float)((ScreenHeight / 2) - (0.5 * ((g::viewMatrix[1][0] * vOrigin.x + g::viewMatrix[1][1] * vOrigin.y + g::viewMatrix[1][2] * vOrigin.z + g::viewMatrix[1][3]) * inverseWidth) * ScreenHeight + 0.5));
        return true;
    }

    return false;
}
 
Это возникает из-за мультипоточного рендеринга в играх - у тебя есть два путя (наиболее простых ) 1) самому строить эту матрицу по фову\позиции\углу обзора 2) (наиболее простой) хукнуть функцию рисования и копировать матрицу в этот момент (в случае source engine сгодится painttransverse )
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это возникает из-за мультипоточного рендеринга в играх - у тебя есть два путя (наиболее простых ) 1) самому строить эту матрицу по фову\позиции\углу обзора 2) (наиболее простой) хукнуть функцию рисования и копировать матрицу в этот момент (в случае source engine сгодится painttransverse )
еще есть 3 способ(для "умных"),не ебать мозгу и спастить.
 
еще есть 3 способ(для "умных"),не ебать мозгу и спастить.
Способ явно для тебя.
Всем здрасьте. Столкнулся с таким мемом у W2S.
Как это лечится и из за чего возникает? Что собственно говоря неправильно?
Сама W2S функция:

Код:
Expand Collapse Copy
bool DrawManager::WorldToScreen(Vector vOrigin, Vector &vScreen)
{
    static uintptr_t clientDll = 0;
    while (!clientDll) { clientDll = (uintptr_t)GetModuleHandle(L"client.dll"); Sleep(100); }

    float w = g::viewMatrix[3][0] * vOrigin.x + g::viewMatrix[3][1] * vOrigin.y + g::viewMatrix[3][2] * vOrigin.z + g::viewMatrix[3][3];

    float ScreenWidth = (float)this->viewPort.Width;
    float ScreenHeight = (float)this->viewPort.Height;

    if (w > 0.01)
    {
        float inverseWidth = 1 / w;
        vScreen.x = (float)((ScreenWidth / 2) + (0.5 * ((g::viewMatrix[0][0] * vOrigin.x + g::viewMatrix[0][1] * vOrigin.y + g::viewMatrix[0][2] * vOrigin.z + g::viewMatrix[0][3]) * inverseWidth) * ScreenWidth + 0.5));
        vScreen.y = (float)((ScreenHeight / 2) - (0.5 * ((g::viewMatrix[1][0] * vOrigin.x + g::viewMatrix[1][1] * vOrigin.y + g::viewMatrix[1][2] * vOrigin.z + g::viewMatrix[1][3]) * inverseWidth) * ScreenHeight + 0.5));
        return true;
    }

    return false;
}
Варианты решения:
1) Вырубить многоядерку
2) Сменить способ рендера на игровой
3) Добавить супер мега офсет для матрицы который лечит блики
4) Писать костыль для рендера
Все способы рабочие нужно только лишь уметь гуглить.
На всем известном форуме куча тем с таким содержанием, а так же решением.
 
Назад
Сверху Снизу