Тема: DirectXTK spritefont
Як створити ресурс-файл font_name.spritefont у DirectXTK?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → DirectXTK spritefont
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Як створити ресурс-файл font_name.spritefont у DirectXTK?
Ага, все просто, у DirectXTK є приладдя для цього
MakeSpriteFont.exe "Times New Roman" TimesNewRoman.spritefont /FontSize:16
А потім дуже зручно використовувати. Моя функція для відмальовки тексту така:
void Renderer::DrawText2D(const char *text, const XMFLOAT2 pos, FXMVECTOR color)
{
size_t size = strlen(text) + 1;
wchar_t* wtext = new wchar_t[size];
mbstowcs_s(&size, wtext, size, text, _TRUNCATE);
m_SpriteBatch->Begin();
m_SpriteFont->DrawString(m_SpriteBatch, wtext, pos, color);
m_SpriteBatch->End();
delete[] wtext;
}
а це ініціалізація
void Renderer::InitFonts()
{
m_SpriteBatch = new SpriteBatch(m_ImmediateContext.Get());
m_SpriteFont = new SpriteFont(m_Device.Get(), L"Resources/TimesNewRoman.spritefont");
}
Цікаво, що в DirectX я робив так:
// Перевести в однорідний clip space.
vout.m_PosH = mul(float4(vin.m_PosL, 1.0f), gWorldViewProj);
де
// Матрицю необхідно трансформувати оскільки DirectX 11 рядково-головний (row major)
XMMATRIX worldViewProj = XMMatrixTranspose(world * view * proj);
і у свою чергу
world = scale * transform;
А OpenGl навпаки
world = transform * scale;
І у шейдері
gl_Position = worldViewProj * vec4(position, 1.0);
Здається це тому, що openGl стовпчиково-головний.
Зауважу, що рядково чи стовпчиково-головний ніяк не впливає на викладку матриці у пам'яті. І множити на матрицю треба справа чи зліва в залежності від того рядково чи стовпчиково вона головна.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися