@Ghostrider
Folgender Vorschlag meinerseits:
Du speicherst dir mal die Namen in einem c-String.
Diesen String lässt Du dann mit der D3DX Funktion->DrawText()
rendern. Bei jedem Renderaufruf veränderst du ganz einfach
die Werte, wo dein Font-Rechteck gezeichnet werden soll -
fertig ist der Scrolltext.
Hier ein kleiner Auszug aus meinem Code. Ist zwar nicht für Scrolltext, habs aber kurz ausprobiert und es klappt super. Brauchst eben nur entsprechend anpassen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// :::::::: RENDER - START ::::::::
//
m_D3D_DEVICE->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);
m_D3D_DEVICE->BeginScene();
m_SPRITE->Begin(D3DXSPRITE_ALPHABLEND);
D3DXMatrixIdentity(&m_MATRIX); // Identitätsmatrix zuweisen (scale=1,rotation=1,translation=1)
m_SPRITE->SetTransform(&m_MATRIX); // matrix dem sprite zuweisen
// Sprite zeichnen, wenn Du eines hast, ansonsten nimm das da raus
m_SPRITE->Draw(
m_TEXTURE, // textur
&m_cropFromBitmap, // ausschnitt von der geladenen textur
NULL, // center
&m_screen_xyzPos, // screen-position
0xFFFFFFFF // color-overlay
//0x8025A735
);
// ::: TEXT RENDERN :::
_renderScreenText();
m_SPRITE->End();
m_D3D_DEVICE->EndScene();
m_D3D_DEVICE->Present(NULL,NULL,NULL,NULL);
//
// :::::::: RENDER - ENDE ::::::::
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
inline void cRenderer::_initD3D_Font()
{
// Schriftfarbe
m_D3D_FONT_COLOR = D3DCOLOR_ARGB(255,20,255,20); // DX Font-Color Objekt
// Initialisieren des DX Font Objektes (Schrifttype und Aussehen)
D3DXCreateFont( m_D3D_DEVICE, 16, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS , NONANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Tahoma"), &m_D3D_FONT );
// Rechteckbereich für Rendering festlegen, wo Text gerendert werden soll
m_D3D_FONT_RENDER_RECT.left = 2;
m_D3D_FONT_RENDER_RECT.right = 780;
m_D3D_FONT_RENDER_RECT.top = 10;
m_D3D_FONT_RENDER_RECT.bottom = m_D3D_FONT_RENDER_RECT.top+600;
}
inline void cRenderer::_renderScreenText()
{
m_D3D_FONT_RENDER_RECT.top -= 1;
m_D3D_FONT_RENDER_RECT.bottom = m_D3D_FONT_RENDER_RECT.top+600;
m_D3D_FONT->DrawText(m_SPRITE, m_screenText, -1, &m_D3D_FONT_RENDER_RECT, 0, m_D3D_FONT_COLOR );
}
inline void cRenderer::_destroyD3D_Font()
{
m_D3D_FONT->Release();
}
|
Hoffe, das hilft Dir ein bisserl weiter ...
EDIT:
Ah, Sorry ... schon spät ...
Habs nochmal gelesen und versteh jetzt was Du meinst.
Ja, ich würd die Namen auch in einen Array schmeissen und eine Funktion bauen, die eben diese MOVE_UP - WAIT3SEC - MOVE_LEFT_OUT funktionalität mit dem D3D Font macht. Danach brauchst die Funktion nur mehr so oft aufrufen, bis Dein Array abgearbeitet ist.