|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Chriss Senior JLI'ler
Anmeldedatum: 18.08.2004 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 22.08.2004, 13:39 Titel: anderungen DirectX9.0a zu DirectX9.0b ??? |
|
|
Hi,
da ich ja ein unerklärbares Problem mit meiner Maus hatte habe ich mir mal das Update für das DirectX SDK runtergeladen und installiert. Laut "DxDiag" habe ich jetzt version 9.0b.
Als nächstes habe ich mein auf dem Laptop funktionierendes Programm geöffnet und wollte es neu kompilieren. Und obwohl nichts verändert wurde habe ich plötzlich Fehlermeldungen.
Hier die betreffenden Codeausschnitte:
----------------------------------------------------------------------------------
m_lpD3DFont->DrawText(Text, -1, &r, DT_CALCRECT, TextColor);
Fehlermeldung:
Funktion akzeptiert keine 5 Parameter
Bemerkung:
hatte sie aber
----------------------------------------------------------------------------------
D3DXCreateFontIndirect(m_lpD3DDevice,
&LogFont,
&m_lpD3DFont);
Fehlermeldung:
Konvertierung des Parameters 2 von 'struct tagLOGFONTA *' in 'const struct _D3DXFONT_DESCA *' nicht moeglich
Bemerkung:
das ist der Original code aus dem Buch der vorher einwandfrei lief
----------------------------------------------------------------------------------
m_lpSprite->Draw(m_AnimationVec[m_CurrentImage],
0,
&m_vScale,
&m_vRotationCenter,
m_Rotation,
&m_vPosition,
0xFFFFFFFF);
Fehlermeldung:
Funktion akzeptiert keine 7 Parameter
Bemerkung:
das war auch der code aus dem Buch der vorher funktioniert hat
Gibt es so starke änderungen von DirectX9.0a zu 9.0b und kann es sein das Programme die für 9.0a geschrieben wurden eventuell fehlerhaft unter 9.0b laufen? |
|
Nach oben |
|
|
Chriss Senior JLI'ler
Anmeldedatum: 18.08.2004 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 22.08.2004, 14:14 Titel: |
|
|
Ok habe die Lösung. Da hat sich wirklich was geändert. Bei Texten kann man noch Sprites mitbenutzen. Um die Funktin wie im Buch zu benutzen muss man:
m_lpD3DFont->DrawText(Text, -1, &r, DT_CALCRECT, TextColor);
in
m_lpD3DFont->DrawText(NULL, Text, -1, &r, DT_CALCRECT, TextColor);
ändern.
Um den Text erstellen zu können muss man eine andere Structur benutzen. Dies betrifft den 2. Parameter in
D3DXCreateFontIndirect(m_lpD3DDevice,
&LogFont,
&m_lpD3DFont);
vorher war es im Buch
LOGFONT LogFont = { 0 };
jetzt braucht man
D3DXFONT_DESC LogFont = { 0 };
welches die Struktur
typedef struct D3DXFONT_DESC {
UINT Height;
UINT Width;
UINT Weight;
UINT MipLevels;
BOOL Italic;
BYTE CharSet;
BYTE OutPrecision;
BYTE Quality;
BYTE PitchAndFamily;
TCHAR FaceName[LF_FACESIZE];
} D3DXFONT_DESC;
hat. Will man nun die Schriftart ändern muss man
strcpy(LogFont.lpFaceName, "Arial");
in
strcpy(LogFont.FaceName, "Arial");
ändern.
Bei den Sprites hat sich auch eineiges geändert aber dafür brauche ich noch. So wie ich das sehe gibt es statt 7 nur noch 5 Parameter. Die Scalierung und die Rotation fallen weg.
Weiß jemand wie ma unter DX9.0b noch die alten Befehle für 9.0a verwenden kann? Denn 3Diminsionale Vectoren für 2D Sprites find ich nicht so praktikabel und auf Rotation und Scallierung wollte ich auch nicht verzichten. |
|
Nach oben |
|
|
Chriss Senior JLI'ler
Anmeldedatum: 18.08.2004 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 22.08.2004, 14:26 Titel: |
|
|
Noch eine kurze ergänzung zu meiner letzten Frage.
Bei der Initialisierung von Direct3D habe ich wie im Buch geschrieben den Parameter D3D_SDK_VERSION übergeben der die aktuelle Versionsnummer enthält. Kennt jemand den Parameter den ich übergeben muss wenn ich die Version ohne Update (9.0a) benutzen will? |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 22.08.2004, 15:30 Titel: |
|
|
Der Parameter den du übergeben musst, ist für DX9.0a und b der gleiche. Die Funktionalitäten zwischen a und b sollten sich nicht geändert haben (in der Runtime, es ging, wenn ich mich richtig erinnere um Fehler/Sicherheitslücken).
Wenn du das Summer Update 2003 installiert hast, kannst du die "alten" Funktionen nicht mehr benutzen. Die Änderungen sind aber nicht so wahnsinnig umfangreich. Hier im Forum steht einiges dazu, ansonten sollte die DX-Doku den Rest hergeben.
C. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|