Всем посанам привет а остальным соболезную
Пытался значит я вывести на чистом аси при помощи хуков d3d9 квадратики и кружочки
Всё работает идеально но... Всё что пытаюсь выводить через DrawPrimitive(Up) идёт по *****
Мб я что-то не так делаю, пиздил я и с других форумов код для рендера и пытался брать код с этого ответа но игре **х** всё равно экран чист но если через pDevice->Clear то всё видно и тож через D3DXCreateLine всё видно так что подразумеваю что проблема где то в DrawPrimitive а не в хуке
Подскажите знатоки пж как заставить всё это дело работать
Пытался значит я вывести на чистом аси при помощи хуков d3d9 квадратики и кружочки
Всё работает идеально но... Всё что пытаюсь выводить через DrawPrimitive(Up) идёт по *****
Мб я что-то не так делаю, пиздил я и с других форумов код для рендера и пытался брать код с этого ответа но игре **х** всё равно экран чист но если через pDevice->Clear то всё видно и тож через D3DXCreateLine всё видно так что подразумеваю что проблема где то в DrawPrimitive а не в хуке
Подскажите знатоки пж как заставить всё это дело работать
C++:
void Line(float x1, float y1, float x2, float y2, float width, bool antialias, DWORD color)
{
ID3DXLine* m_Line;
D3DXCreateLine(pDevice, &m_Line);
D3DXVECTOR2 line[] = { D3DXVECTOR2(x1, y1), D3DXVECTOR2(x2, y2) };
m_Line->SetWidth(width);
if (antialias) m_Line->SetAntialias(1);
m_Line->Begin();
m_Line->Draw(line, 2, color);
m_Line->End();
m_Line->Release();
}
C++:
D3DRECT rect = { X, Y, X + L, Y + H };
m_pDevice->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0);
C++:
void Circle(float x, float y, float radius, int rotate, int type, bool smoothing, int resolution, DWORD color)
{
std::vector<vertex> circle(resolution + 2);
float angle = rotate * D3DX_PI / 180;
float pi;
if (type == circle_type::full) pi = D3DX_PI; // Full circle
if (type == circle_type::half) pi = D3DX_PI / 2; // 1/2 circle
if (type == circle_type::quarter) pi = D3DX_PI / 4; // 1/4 circle
for (int i = 0; i < resolution + 2; i++)
{
circle[i].x = (float)(x - radius * cos(i * (2 * pi / resolution)));
circle[i].y = (float)(y - radius * sin(i * (2 * pi / resolution)));
circle[i].z = 0;
circle[i].rhw = 1;
circle[i].color = color;
}
// Rotate matrix
int _res = resolution + 2;
for (int i = 0; i < _res; i++)
{
circle[i].x = x + cos(angle) * (circle[i].x - x) - sin(angle) * (circle[i].y - y);
circle[i].y = y + sin(angle) * (circle[i].x - x) + cos(angle) * (circle[i].y - y);
}
pDevice->CreateVertexBuffer((resolution + 2) * sizeof(vertex), D3DUSAGE_WRITEONLY, D3DFVF_XYZRHW | D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &g_pVB, NULL);
VOID* pVertices;
g_pVB->Lock(0, (resolution + 2) * sizeof(vertex), (void**)&pVertices, 0);
memcpy(pVertices, &circle[0], (resolution + 2) * sizeof(vertex));
g_pVB->Unlock();
pDevice->SetTexture(0, NULL);
pDevice->SetPixelShader(NULL);
if (smoothing)
{
pDevice->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, TRUE);
pDevice->SetRenderState(D3DRS_ANTIALIASEDLINEENABLE, TRUE);
}
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
pDevice->SetStreamSource(0, g_pVB, 0, sizeof(vertex));
pDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
pDevice->DrawPrimitive(D3DPT_LINESTRIP, 0, resolution);
if (g_pVB != NULL) g_pVB->Release();
}
C++:
void CRender::Line(int sX, int sY, int eX, int eY, D3DCOLOR D3DCOLOR)
{
vertex pVertex[2] = { { sX, sY, 0.0f, 1.0f, D3DCOLOR }, { eX, eY, 0.0f, 1.0f, D3DCOLOR } };
MyDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
MyDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
MyDevice->SetRenderState(D3DRS_FOGENABLE, FALSE);
MyDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
MyDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
MyDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
MyDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
MyDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
MyDevice->SetRenderState(D3DRS_STENCILENABLE, FALSE);
MyDevice->SetTexture(0, NULL);
MyDevice->SetPixelShader(NULL);
MyDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
MyDevice->DrawPrimitiveUP(D3DPT_LINELIST, 1, &pVertex, sizeof(vertex));
}