 |

25.02.2024, 04:44
|
|
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами:
4598023
Репутация:
183
|
|
Сообщение от CleanLegend
Пример для тестирования:
C++:
Код:
void
DrawRect
(
LPDIRECT3DDEVICE9 m_pDevice
,
int
X
,
int
Y
,
int
L
,
int
H
,
D3DCOLOR color
)
{
D3DRECT rect
=
{
X
,
Y
,
X
+
L
,
Y
+
H
}
;
m_pDevice
->
Clear
(
1
,
&
rect
,
D3DCLEAR_TARGET
,
color
,
0
,
0
)
;
}
HRESULT WINAPI
myEndScene
(
IDirect3DDevice9
*
m_pDevice
)
{
DrawRect
(
m_pDevice
,
250
,
250
,
10
,
10
,
0xFFFF0000
)
;
return
oEndScene
(
m_pDevice
)
;
}
Получаем:

Спасибо, работает.
Но пару вопросов, @CleanLegend.
1) Нет полупрозрачности. Использую
C++:
и цвет в формате ARGB. Такое впечатление, что там формат просто RGB, потому что альфа канал вообще ни на что не влияет.
2) Не могу понять как рисовать что-то кроме квадратиков.
Хотя бы примитивный кружочек, линию нужной толщины. Но ладно, это я еще кое-как смогу с помощью квадратиков нарисовать...
А как насчёт текста?
И да, я знаю про возможность добавить имгуи, но пока что такой необходимости нет, поэтому просто помоги как писать текст.
И еще, не по теме, но всё же - как включить мышку?
|
|
|

27.02.2024, 01:38
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
2) chatgpt
C++:
Код:
#include
void
DrawCircle
(
LPDIRECT3DDEVICE9 m_pDevice
,
int
X
,
int
Y
,
int
radius
,
D3DCOLOR color
)
{
const
int
numSegments
=
32
;
// You can adjust this for smoother or more segmented circles
const
float
angleIncrement
=
2.0f
*
D3DX_PI
/
numSegments
;
std
::
vector
rects
;
for
(
int
i
=
0
;
i
(
radius
*
std
::
cos
(
angle
)
)
;
float
y1
=
Y
+
static_cast
(
radius
*
std
::
sin
(
angle
)
)
;
float
x2
=
X
+
static_cast
(
radius
*
std
::
cos
(
angle
+
angleIncrement
)
)
;
float
y2
=
Y
+
static_cast
(
radius
*
std
::
sin
(
angle
+
angleIncrement
)
)
;
D3DRECT rect
=
{
static_cast
(
x1
)
,
static_cast
(
y1
)
,
static_cast
(
x2
)
,
static_cast
(
y2
)
}
;
rects
.
push_back
(
rect
)
;
}
m_pDevice
->
Clear
(
rects
.
size
(
)
,
rects
.
data
(
)
,
D3DCLEAR_TARGET
,
color
,
0
,
0
)
;
}
HRESULT WINAPI
myEndScene
(
IDirect3DDevice9
*
m_pDevice
)
{
// Draw a circle centered at (250, 250) with a radius of 10 and red color
DrawCircle
(
m_pDevice
,
250
,
250
,
10
,
0xFFFF0000
)
;
return
oEndScene
(
m_pDevice
)
;
}
|
|
|

27.02.2024, 20:15
|
|
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами:
4598023
Репутация:
183
|
|
Сообщение от Smeruxa
2) chatgpt
Сообщение от Vintik
Но ладно, это я еще кое-как смогу с помощью квадратиков нарисовать...
А как насчёт текста?
|
|
|

27.02.2024, 20:46
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
hola vpn + chat gpt (40 рублей аккаунт стоит личный и меньше) =
C++:
Код:
#include
IDWriteFactory
*
dwriteFactory
;
IDWriteTextFormat
*
textFormat
;
// Инициализация DirectWrite
HRESULT
InitDirectWrite
(
)
{
if
(
FAILED
(
DWriteCreateFactory
(
DWRITE_FACTORY_TYPE_SHARED
,
__uuidof
(
IDWriteFactory
)
,
reinterpret_cast
(
&
dwriteFactory
)
)
)
)
{
return
E_FAIL
;
}
if
(
FAILED
(
dwriteFactory
->
CreateTextFormat
(
L
"Arial"
,
nullptr
,
DWRITE_FONT_WEIGHT_NORMAL
,
DWRITE_FONT_STYLE_NORMAL
,
DWRITE_FONT_STRETCH_NORMAL
,
12.0f
,
L
"en-US"
,
&
textFormat
)
)
)
{
return
E_FAIL
;
}
return
S_OK
;
}
// Функция отрисовки текста
void
DrawText
(
IDirect3DDevice9
*
m_pDevice
,
const
wchar_t
*
text
,
int
x
,
int
y
,
D3DCOLOR color
)
{
textFormat
->
SetTextAlignment
(
DWRITE_TEXT_ALIGNMENT_LEADING
)
;
textFormat
->
SetParagraphAlignment
(
DWRITE_PARAGRAPH_ALIGNMENT_NEAR
)
;
RECT rect
=
{
x
,
y
,
0
,
0
}
;
textFormat
->
SetTextAlignment
(
DWRITE_TEXT_ALIGNMENT_LEADING
)
;
m_pDevice
->
BeginScene
(
)
;
// Установка параметров рендеринга текста (если необходимо)
// ...
// Отрисовка текста
dwriteFactory
->
CreateTextLayout
(
text
,
wcslen
(
text
)
,
textFormat
,
200.0f
,
50.0f
,
nullptr
,
nullptr
,
nullptr
)
;
m_pDevice
->
EndScene
(
)
;
}
C++:
Код:
//Затем в функции myEndScene вы можете вызвать DrawText так:
HRESULT WINAPI
myEndScene
(
IDirect3DDevice9
*
m_pDevice
)
{
DrawText
(
m_pDevice
,
L
"Hello, DirectX!"
,
100
,
100
,
D3DCOLOR_ARGB
(
255
,
255
,
255
,
255
)
)
;
return
oEndScene
(
m_pDevice
)
;
}
//Этот код предполагает, что InitDirectWrite уже был вызван ранее для инициализации DirectWrite.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|