JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=ff1c7be9deb71cf8db9884c31f3d8614Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

anderungen DirectX9.0a zu DirectX9.0b ???

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 22.08.2004, 13:39    Titel: anderungen DirectX9.0a zu DirectX9.0b ??? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 22.08.2004, 14:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 22.08.2004, 14:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 22.08.2004, 15:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum