
08.08.2018, 12:42
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Введение
Я не буду рассказывать в этой статье, что такое DirectX, D3DDevice и прочее, что Вы можете прочитать в Интернете самостоятельно. Я лишь покажу, как пользоваться готовыми функциями для рисования несложных объектов на экране игры.
Начало работы
Для начала Вам надо запомнить, что всё рисуется исключительно в callback-функции Present.
Откройте исходник плагина, с которым работали в предыдущих двух уроках, и вставьте эту функцию перед определением mainloop:
C++:
Код:
bool
CALLBACK Present
(
CONST RECT
*
pSourceRect
,
CONST RECT
*
pDestRect
,
HWND hDestWindowOverride
,
CONST RGNDATA
*
pDirtyRegion
)
{
if
(
SUCCEEDED
(
SF
->
getRender
(
)
->
BeginRender
(
)
)
)
// если рендерер готов к рисованию
{
// рисуем
SF
->
getRender
(
)
->
EndRender
(
)
;
// завершаем рисование
}
;
return
true
;
// возвращаем положительный результат
}
;
Затем регистрируем этот callback внутри условного блока if( !init ):
C++:
Код:
SF
->
getRender
(
)
->
registerD3DCallback
(
eDirect3DDeviceMethods
::
D3DMETHOD_PRESENT
,
Present
)
;
Покажу простой пример рисования квадрата:
Там, где помечен комментарий "рисуем", вставляем код:
C++:
Код:
SF
->
getRender
(
)
->
DrawBox
(
500
,
500
,
25
,
25
,
D3DCOLOR_ARGB
(
255
,
0
,
255
,
0
)
)
;
Получаем зелёный квадрат в координатах 500:500, размерами 25x25 и зелёным цветом.
Теперь покажу рисование текста.
Объявляем глобальный указатель на шрифт:
C++:
Код:
stFontInfo
*
pFont
;
//Затем один раз инициализируем шрифт:
pFont
=
SF
->
getRender
(
)
->
CreateNewFont
(
"Tahoma"
,
12
,
FCR_BORDER
)
;
//Рисуем в callback-функции Present:
pFont
->
Print
(
"текст"
,
D3DCOLOR_ARGB
(
255
,
255
,
255
,
0
)
,
500
,
500
,
false
)
;
Получаем:
Рисование текстуры:
Объявляем глобальный указатель на текстуру:
C++:
Код:
stTextureInfo
*
pTexture
;
//Инициализируем:
pTexture
=
SF
->
getRender
(
)
->
LoadTextureFromFile
(
"SAMPFUNCS\\image.png"
)
;
//Рисуем:
SF
->
getRender
(
)
->
DrawTexture
(
pTexture
,
500
,
500
,
pTexture
->
imgInfo
.
Width
,
pTexture
->
imgInfo
.
Height
,
0
,
-
1
)
;
Получаем:
Также текстуры можно загружать из ресурса и буфера, но об этом в другой раз.
Рисование геометрических фигур:
C++:
Код:
SF
->
getRender
(
)
->
DrawPolygon
(
500
,
500
,
50
,
50
,
0
,
5
,
D3DCOLOR_ARGB
(
255
,
0
,
255
,
255
)
)
;
Рисует пятиугольник в координатах 500:500, с нулевым углом поворота, синим цветом и размерами 50x50:
Остальные функции будут описаны в следующей части урока.
Автор: urShadow
|
|
|
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|