| Ya Zaregalsya |
14.02.2021 06:36 |
Цитата:
Сообщение от Dark_Knight
Создаешь нужную функцию для коллбека и уже в нем её вызываешь
C++:
Код:
//Примерный код от балды и параметры могу в реале быть другими
void
Draw
(
)
{
//render text here
}
bool
CALLBACK
Present
(
const
RECT
*
pSourceRect
,
const
RECT
*
pDestRect
,
HWND hDestWindowOverride
,
const
RGNDATA
*
pDirtyRegion
)
{
Draw
(
)
;
return
true
;
}
void
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
SF
->
getRender
(
)
->
registerD3DCallback
(
D3DMETHOD_PRESENT
,
Present
)
;
init
=
true
;
}
}
|
Давно не работал с рендером. Почудилось, что с ним можно работать примерно как с потоком: получать хэндл и по необходимости разрушать. А так да, смысла создавать более одной функции present нет, соответственно и свои аргументы туда совать бесполезно.
Но в таком случае вопрос не отпадает, а только усложняется. Приведённый Вами вариант конечно добавляет немножко удобства, но не решает основную задачу. Нужна функция вида
Код:
showText(std::string text, int showTime)
, которую можно было бы вызывать из любой области программы.
Попробую сделать эту функцию конструктором класса ShowText, который будет вызывать собственный метод Present, который, в свою очередь будет рисовать текст до тех пор, пока поле showTime не станет равно нулю. Осталось только научиться потом этот колбэк удалять.
|