Рендеринг текста на 3 пикселя слишком низок с использованием ID3DXFont::DrawText
Я пытаюсь нарисовать текст на экране, используя координаты x и y (слева и сверху соответственно), однако текст не отображается так, как ожидалось на оси y.
Я выполняю тестовую среду визуализации Direct3D9, используя ID3DXFont:: DrawTextA.
Я попытался удалить DT_TOP из параметра "Формат" и убедился, что позиция y в моем RECT правильная при вызове ID3DXFont:: DrawTextA.
D3DXCreateFontA( m_device, height, 0, weight, 0, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH, face, &font );
RECT rect { };
font->DrawTextA( nullptr, buffer, -1, &rect, DT_CALCRECT | DT_NOCLIP, colour );
SetRect( &rect, flags & FONT_CENTER_X ? x - rect.right / 2 : x, flags & FONT_CENTER_Y ? y - rect.bottom / 2 : y, 0, 0 );
font->DrawTextA( nullptr, buffer, -1, &rect, DT_TOP | DT_LEFT | DT_NOCLIP, colour );
Пусть х = 5 и у = 5.
При использовании следующего кода (при условии, что флаги центрирования не установлены), ожидаемый результат заключается в том, что текст будет отображаться с координатами экрана 5(x) и 5 (y).
Фактическим результатом является то, что текст отображается в 5 (х) и 8(у).
Однако, если я использую флаг FONT_CENTER_Y, то позиция y будет правильной (в расчете используется правильный y).
С уважением.