Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Direct X 9 SDK: как работать с 2d?

3 views
Skip to first unread message

Slava Tutushkin

unread,
Dec 10, 2004, 4:52:44 AM12/10/04
to

Поставил распоследний DX SDK.
Как используя Direct Graphics и предлагаемый ими фрэймворк, рисовать в 2d?
Пиксель, там, зажечь, спрайтик сблитить, прямоугольничек закрасить?

Очевидно, делать это надо внутри
void CALLBACK OnFrameRender( IDirect3DDevice9* pd3dDevice, double fTime,
float fElapsedTime )

А вот что делать с этим pd3dDevice, как правильно выцепить surface, как на
нём порисовать напрямую?


Best Regards,
Slava Tutushkin

Dmitri Roschin

unread,
Dec 10, 2004, 5:08:24 AM12/10/04
to
Hello, Slava!
You wrote on Fri, 10 Dec 2004 09:52:44 +0000 (UTC):


ST> Поставил распоследний DX SDK.
ST> Как используя Direct Graphics и предлагаемый ими фрэймворк, рисовать в
2d?
ST> Пиксель, там, зажечь, спрайтик сблитить, прямоугольничек закрасить?

ST> Очевидно, делать это надо внутри
ST> void CALLBACK OnFrameRender( IDirect3DDevice9* pd3dDevice, double
ST> fTime, float fElapsedTime )

ST> А вот что делать с этим pd3dDevice, как правильно выцепить surface, как
ST> на нём порисовать напрямую?

Surface получить - GetRenderTarget, прямоугольник закрасить - ColorFill,
спрайт без альфаблендинга вывести - StretchRect, c альфаблендингом -
D3DXSprite, линии рисовать - D3DXLine.

With best regards, Dmitri Roschin.


Slava Tutushkin

unread,
Dec 10, 2004, 5:26:28 AM12/10/04
to

ST>> А вот что делать с этим pd3dDevice, как правильно выцепить surface,
ST>> как на нём порисовать напрямую?
DR> Surface получить - GetRenderTarget, прямоугольник закрасить -
DR> ColorFill, спрайт без альфаблендинга вывести - StretchRect, c
DR> альфаблендингом - D3DXSprite, линии рисовать - D3DXLine.

Спасибо!
А к памяти напрямую как-нибудь можно обратиться? Чтобы, например, пиксели
повключать.
Или как ещё пиксели трогать?

Best Regards,
Slava Tutushkin

Michael Kazakov

unread,
Dec 10, 2004, 10:04:24 AM12/10/04
to

Здравствуй, Slava!

Однажды, 10 декабря 2032 12:52, Slava Tutushkin писал(а) All:

ST> Поставил распоследний DX SDK.
ST> Как используя Direct Graphics и предлагаемый ими фрэймворк, рисовать в

ST> 2d? Пиксель, там, зажечь, спрайтик сблитить, прямоугольничек
ST> закрасить?
Ихный framework пользовать очень не советую.

ST> Очевидно, делать это надо внутри
ST> void CALLBACK OnFrameRender( IDirect3DDevice9* pd3dDevice, double
ST> fTime, float fElapsedTime )

ST> А вот что делать с этим pd3dDevice, как правильно выцепить surface,
ST> как на нём порисовать напрямую?

апиши свой маленький framework и используй, например, D3DXSprite вывода 2d.
Он правда кривой как смерть, так что потом все-равно придется переписывать под
textured quads.

Всего наилучшего, Михаил Казаков.

Slava Tutushkin

unread,
Dec 10, 2004, 9:53:47 AM12/10/04
to

ST>> 2d? Пиксель, там, зажечь, спрайтик сблитить, прямоугольничек
ST>> закрасить?
MK> Ихный framework пользовать очень не советую.
А почему?

Best Regards,
Slava Tutushkin

Dmitri Roschin

unread,
Dec 11, 2004, 9:48:08 AM12/11/04
to
Hello, Slava!
You wrote to Dmitri Roschin on Fri, 10 Dec 2004 10:26:28 +0000 (UTC):

ST> Спасибо!
ST> А к памяти напрямую как-нибудь можно обратиться? Чтобы, например,
ST> пиксели повключать.
ST> Или как ещё пиксели трогать?

Например, создаешь девайс с
D3DPRESENT_PARAMETERS::Flags=D3DPRESENTFLAG_LOCKABLE_BACKBUFFER лочишь
бэкбуфер LockRect'ом, меняешь биты, анлочишь. Но это медленно. Можно создать
текстуру в D3DPOOL_SYSTEMMEM и работать с ней, переодически скидывая в
бэкбуфер. Динамическую текстуру можно использовать.

Почитай MSDN, там это всё описано.

0 new messages