sg
-
Автор темы
- #1
Добрый день югейм. Решил слезть с иглы ImGui и попробовать себя в рендере меню на DirectX скорее чисто для опыта, да и самому писать иногда приятнее. В общем проблема следующая, есть некоторый код рендера FilledRect, который рендерит практически как надо, но, как в анекдоте, есть нюанс, а именно линии вокруг самого прямоугольника, в 1 пиксель проходит линия которая будто бы имеет 50% альфы от всего цвета ( см. скрин ). В чем может быть проблема ? А так же очень странные точно такие же пустые пиксели по диагонали при бордера и неправильно рендерится левый нижний угол, хотя вспомнив векторную алгебру с 8 класса всё должно быть нормально.
Так же отключал антиалиасинг при рендере, но это не давало никакого результата. Использую DX девайс самой игры. Вот код:
Так же отключал антиалиасинг при рендере, но это не давало никакого результата. Использую DX девайс самой игры. Вот код:
Рендер окна:
void CWindow::Render()
{
HandleMovement();
// Backgound rect render
g_pRender->FilledRectangle(m_vec2Pos, m_vec2Size, m_colBackgroundColor);
// TEST: Borders render
g_pRender->Rectangle(m_vec2Pos, m_vec2Size, CColor(8, 8, 8));
g_pRender->Rectangle(m_vec2Pos - CVector2(1, 1), m_vec2Size + CVector2(1, 1), CColor(8, 8, 8));
g_pRender->Rectangle(m_vec2Pos - CVector2(2, 2), m_vec2Size + CVector2(2, 2), CColor(8, 8, 8));
// Header
RenderHeader();
}
FilledRectangle:
void CRender::FilledRectangle(CVector2 vec2Pos, CVector2 vec2Size, CColor colColor)
{
m_pRenderDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE);
const auto toX = vec2Pos.x + vec2Size.x;
const auto toY = vec2Pos.y + vec2Size.y;
const auto col = colColor.GetD3D9Color();
Vertex_t vert[5] =
{
{ vec2Pos.x, vec2Pos.y, 0.0f, 1.0f, col },
{ toX, vec2Pos.y, 0.0f, 1.0f, col },
{ toX, toY, 0.0f, 1.0f, col },
{ vec2Pos.x, toY, 0.0f, 1.0f, col },
{ vec2Pos.x, vec2Pos.y, 0.0f, 1.0f, col }
};
m_pRenderDevice->SetTexture(0, nullptr);
m_pRenderDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 3, &vert, sizeof(Vertex_t));
}
Rectangle:
void CRender::Rectangle(CVector2 vec2Pos, CVector2 vec2Size, CColor colColor)
{
const auto toX = vec2Pos.x + vec2Size.x;
const auto toY = vec2Pos.y + vec2Size.y;
const auto col = colColor.GetD3D9Color();
Vertex_t vert[5] =
{
{ vec2Pos.x, vec2Pos.y, 0.0f, 1.0f, col },
{ toX, vec2Pos.y, 0.0f, 1.0f, col },
{ toX, toY, 0.0f, 1.0f, col },
{ vec2Pos.x, toY, 0.0f, 1.0f, col },
{ vec2Pos.x, vec2Pos.y, 0.0f, 1.0f, col }
};
m_pRenderDevice->SetTexture(0, nullptr);
m_pRenderDevice->DrawPrimitiveUP(D3DPT_LINESTRIP, 4, &vert, sizeof(Vertex_t));
}
Вложения
-
35.9 KB Просмотры: 15