Вопрос Не отрисовывается строка в Present

Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
478
Реакции[?]
140
Поинты[?]
3K
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
478
Реакции[?]
140
Поинты[?]
3K
Игра использует Present ?
Да. Игра Warface. Могу рисовать спокойно квадраты. Но именно строки не отрисовывает. Перепробовал все что можно. Есть какие-то предположения?
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Да. Игра Warface. Могу рисовать спокойно квадраты. Но именно строки не отрисовывает. Перепробовал все что можно. Есть какие-то предположения?
C++:
void cRender::DrawString(int x, int y, DWORD color, DWORD dwFlag,  string fmt, ...)
{
    char buffer[512];
    va_list args;
    va_start(args, fmt);
    vsprintf_s(buffer, fmt.c_str(), args);
    va_end(args);

    DWORD dwMainFlags = NULL;
    RECT r,
        rs[4];

    dwMainFlags = dwFlag | DT_CALCRECT | DT_NOCLIP;
    g_pDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
    if (dwFlag & DT_SHADOW)
    {
        pSetRect(&rs[0], x - 1, y, x, 0);
        pSetRect(&rs[1], x + 1, y, x, 0);
        pSetRect(&rs[2], x, y - 1, x, 0);
        pSetRect(&rs[3], x, y + 1, x, 0);
        for (INT i = NULL; i < 4; i++)
        {
            this->pFont->DrawText(nullptr, buffer, -1, &rs[i], dwMainFlags, 0xFF000000);
            if (dwMainFlags & DT_CALCRECT)
                this->pFont->DrawText(nullptr, buffer, -1, &rs[i], NULL, 0xFF000000);
        }
    }
    pSetRect(&r, x, y, x, 0);
    this->pFont->DrawText(nullptr, buffer, -1, &r, dwMainFlags, color);
    if (dwMainFlags & DT_CALCRECT)
        this->pFont->DrawText(nullptr, buffer, -1, &r, NULL, color);
    
}
 
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
478
Реакции[?]
140
Поинты[?]
3K
C++:
void cRender::DrawString(int x, int y, DWORD color, DWORD dwFlag,  string fmt, ...)
{
    char buffer[512];
    va_list args;
    va_start(args, fmt);
    vsprintf_s(buffer, fmt.c_str(), args);
    va_end(args);

    DWORD dwMainFlags = NULL;
    RECT r,
        rs[4];

    dwMainFlags = dwFlag | DT_CALCRECT | DT_NOCLIP;
    g_pDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
    if (dwFlag & DT_SHADOW)
    {
        pSetRect(&rs[0], x - 1, y, x, 0);
        pSetRect(&rs[1], x + 1, y, x, 0);
        pSetRect(&rs[2], x, y - 1, x, 0);
        pSetRect(&rs[3], x, y + 1, x, 0);
        for (INT i = NULL; i < 4; i++)
        {
            this->pFont->DrawText(nullptr, buffer, -1, &rs[i], dwMainFlags, 0xFF000000);
            if (dwMainFlags & DT_CALCRECT)
                this->pFont->DrawText(nullptr, buffer, -1, &rs[i], NULL, 0xFF000000);
        }
    }
    pSetRect(&r, x, y, x, 0);
    this->pFont->DrawText(nullptr, buffer, -1, &r, dwMainFlags, color);
    if (dwMainFlags & DT_CALCRECT)
        this->pFont->DrawText(nullptr, buffer, -1, &r, NULL, color);
  
}
Dimedrol как всегда выручает) Сработало. Спасибо огромное.
Решение:
Установить D3DRS_ZENABLE на 0.
Код:
pDevice->SetRenderState(D3DRS_ZENABLE, FALSE);
g_pRenderer->DrawString(500, 500, D3DCOLOR_WHITE, "test");
pDevice->SetRenderState(D3DRS_ZENABLE, TRUE);
 
Последнее редактирование:
Сверху Снизу