
08.08.2020, 19:43
|
|
Новичок
Регистрация: 12.02.2016
Сообщений: 24
С нами:
5394404
Репутация:
8
|
|
Всем посанам привет а остальным соболезную
Пытался значит я вывести на чистом аси при помощи хуков 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
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
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
)
)
;
}
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|