|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Leviathan Mini JLI'ler
Alter: 49 Anmeldedatum: 12.01.2005 Beiträge: 31 Wohnort: S9 Medaillen: Keine
|
Verfasst am: 12.01.2005, 07:27 Titel: Kapitel 21.2 "Sprites bewegen" und DirectX9 Oktobe |
|
|
Hallo zusammen,
kann mir bitte jemand helfen den Quellcode vom Kapitel 21.2 zu modifizieren, so dass das Beispiel auch mit der Version DirectX Oktober funktioniert?
Da schein wohl die Methode "draw" der Sprite-Klasse 5 statt 7 Parameter zu haben.
Außerdem verursacht die Textausgabe einen Laufzeitfehler.
Hat es einer von euch zum laufen bekommen?
Vielleicht könnte der Autor des Buches ein paar Worte dazu verlieren.
Danke sehr!
mfg |
|
Nach oben |
|
|
HomeLess_PunkDrummer JLI Master Trainee
Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 12.01.2005, 08:15 Titel: |
|
|
Du hast unter C:/DXSDK/Doc die Hilfedatei. Gib da die Funktionsnamen ein, und du kriegst die Beschreibung aller Parameter, und was du beachten musst.
Warum hast du um die Zeit keine Schule?(8:27am)
Gruß _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
|
Leviathan Mini JLI'ler
Alter: 49 Anmeldedatum: 12.01.2005 Beiträge: 31 Wohnort: S9 Medaillen: Keine
|
Verfasst am: 12.01.2005, 08:23 Titel: |
|
|
Ich hab auch versucht die Parameter anzupassen, bloß ich bekomme jedes Mal nur einen schwarzen Bildschirm zu sehen, ohne den Sprite...
Da sind nun 3dVektoren statt 2dVektoren zu verwenden. Ist ja wunderbar, ich habe sie augetauscht und die z-Koordinate auf 0.0f gesetzt.
Es ist aber kein Sprite zu sehen.
Außerdem: wenn ich die Textausgabe nicht auskommentiere, dann gibts noch zusätzlich zur Laufzeit einen Fehler. Da hilft nun keine Online Hilfe mehr... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 12.01.2005, 08:25 Titel: |
|
|
Code: | // Erzeugen der D3D-Schrift
void CDirect3D::CreateFont(void)
{
// Struktur für die Beschreibung der Schriftart
// anlegen und Elemente mit 0 initialisieren
D3DXFONT_DESC FontDesc = { 0 };
// // das Element FaceName muss den Namen der
// gewünschten Schriftart enthalten
strcpy(FontDesc.FaceName, "Arial");
// nach erfolgreichem Aufruf zeigt lpD3DFont
// auf ein Objekt vom Typ D3DXFont
D3DXCreateFontIndirect(m_lpD3DDevice,
&FontDesc,
&m_lpD3DFont);
} |
Code: | // Text an Position x,y ausgeben
void CDirect3D::DrawText(LPCSTR Text, int x, int y, D3DCOLOR TextColor,bool bCenter)
{
RECT r = { x, y, 0, 0 };
// Größe des Rechtecks berechnen
m_lpD3DFont->DrawText(NULL, Text, -1, &r, DT_CALCRECT, TextColor);
if(bCenter)
{
int width=(r.right-r.left)/2;
int height=(r.bottom-r.top)/2;
r.left-=width;
r.right-=width;
r.top-=height;
r.bottom-=height;
}
// Text ausgeben
m_lpD3DFont->DrawText(NULL, Text, -1, &r, DT_CENTER, TextColor);
} |
Hier musste ne menge schaun was du brauchst, weil issn bissl viel modifiziert
Code: | // Sprite zeichnen
void CSprite::Draw()
{
//Kein brauchbares Animationsset gewählt
if(m_CurrentAnimSet==-1 || !m_Visible)
return;
if(bProcess)
Process();
// testen, ob die nächste Animation angezeigt werden soll
if(++m_AnimationDelay > m_AnimationSpeed && m_PlayAnimation)
{
m_AnimationDelay = 0;
// wenn ja, nächste Grafik (Textur) verwenden
if(++m_CurrentImage >= m_AnimSet[m_CurrentAnimSet].m_AnimationVec.size())
{
if(!m_LoopAnimation)
m_PlayAnimation = false;
m_CurrentImage = 0;
}
}
m_vCenter = D3DXVECTOR3((float)m_AnimSet[m_CurrentAnimSet].m_Width/2, (float)m_AnimSet[m_CurrentAnimSet].m_Height/2,0.0f);
// Transformationsmatrizen angeben - neu im Summer Update 2003
D3DXMATRIXA16 matCombo, matRot, matScale, matTrans;
D3DXMatrixRotationZ(&matRot,m_Rotation);
D3DXMatrixScaling(&matScale, m_vScale.x, m_vScale.y, m_vScale.z);
D3DXMatrixTranslation(&matTrans, m_vPosition.x+stepx, m_vPosition.y+stepy, m_vPosition.z);
D3DXMatrixMultiply(&matCombo, &matRot, &matScale);
D3DXMatrixMultiply(&matCombo, &matCombo, &matTrans);
m_lpSprite->Begin(D3DXSPRITE_DONOTSAVESTATE | D3DXSPRITE_ALPHABLEND);
m_lpSprite->SetTransform(&matCombo);
// Sprite in der passenden Animationsstufe zeichnen
char alpha=(char)m_Alpha;
HRESULT hr=m_lpSprite->Draw(m_AnimSet[m_CurrentAnimSet].m_AnimationVec[m_CurrentImage],
NULL,
&m_vCenter,
NULL,
D3DCOLOR_RGBA(255,255,255,alpha));
m_lpSprite->End();
} |
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
HomeLess_PunkDrummer JLI Master Trainee
Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 12.01.2005, 08:27 Titel: |
|
|
Was für Textausgabe? von der Direct3D-Klasse? Dann könnte doch der Fehler ganz woanders sein. Was für ein Laufzeitfehler is das?
EDIT: fallen war ma wieder schneller>< _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
|
Leviathan Mini JLI'ler
Alter: 49 Anmeldedatum: 12.01.2005 Beiträge: 31 Wohnort: S9 Medaillen: Keine
|
Verfasst am: 12.01.2005, 09:07 Titel: |
|
|
HomeLess_PunkDrummer hat Folgendes geschrieben: | Was für Textausgabe? von der Direct3D-Klasse? Dann könnte doch der Fehler ganz woanders sein. Was für ein Laufzeitfehler is das?
|
Die Textausgabe steht in dem Originalbeispiel direkt hinter dem Draw des Sprites.
Den Quellcode habe ich leider im Moment nicht zur Hand. |
|
Nach oben |
|
|
Leviathan Mini JLI'ler
Alter: 49 Anmeldedatum: 12.01.2005 Beiträge: 31 Wohnort: S9 Medaillen: Keine
|
Verfasst am: 12.01.2005, 11:52 Titel: |
|
|
@ FallenAngel84
Danke! Wahrscheinlich liegt es an dem "Begin" und "End" beim Sprite selbst.
Ich werde es heute abend ausprobieren. |
|
Nach oben |
|
|
Leviathan Mini JLI'ler
Alter: 49 Anmeldedatum: 12.01.2005 Beiträge: 31 Wohnort: S9 Medaillen: Keine
|
Verfasst am: 12.01.2005, 21:26 Titel: |
|
|
Hallo nochmals,
es funktioniert jetzt wunderbar mit dem Sprite.
Wenn mir jetzt noch einer sagen könnte warum die Anweisung:
Code: |
Direct3D.DrawText("Bewegung mit Hilfe der Nachrichtenfunktionen - Bewegung ist nicht flüssig",100,100,0xFFFFFFFF);
|
einen Laufzeitfehler verursacht... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 12.01.2005, 21:53 Titel: |
|
|
Kannst ja mal nen Haltepunkt auf die Funktion setzen dann Debuggen und mit F10/F11 schaun wo genau er sich verabschiedet. Ich nehme mal an das es etwas mit dem Text bzw. der Länge des Textes zu tun hat.
Ich hab das Problem aber nicht das ich auf std::string umgestiegen bin _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Leviathan Mini JLI'ler
Alter: 49 Anmeldedatum: 12.01.2005 Beiträge: 31 Wohnort: S9 Medaillen: Keine
|
Verfasst am: 13.01.2005, 11:42 Titel: |
|
|
@ FallenAngel84
Hast Du auch die DirectX Version vom Oktober installiert?
Bei mir geht nämlich der Aufruf der drawText Methode in allen Beispielen schief... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 13.01.2005, 14:21 Titel: |
|
|
Hab nur die SummerSDK
welche Visual Studoi Version hast du ? Hab geört das bei Version6 das October SDK nicht geht. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Leviathan Mini JLI'ler
Alter: 49 Anmeldedatum: 12.01.2005 Beiträge: 31 Wohnort: S9 Medaillen: Keine
|
Verfasst am: 13.01.2005, 14:36 Titel: |
|
|
Hi!
Es funktioniert auch mit VS C++, bloß Du mußt dir außer dem SDK auch noch "Extras" von der Microsoft Seite runterladen.
Dort ist ne lib (dxd9 glaube ich, ist aber genau beim Download von DirectX Oktober oder Dezember auf der Seite beschrieben), die Du per Hand in Dein Studio verzeichnis reinkopierst.
Die ist extra für VS kompiliert. |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 13.01.2005, 14:48 Titel: |
|
|
Leviathan hat Folgendes geschrieben: | Hallo nochmals,
es funktioniert jetzt wunderbar mit dem Sprite.
Wenn mir jetzt noch einer sagen könnte warum die Anweisung:
Code: |
Direct3D.DrawText("Bewegung mit Hilfe der Nachrichtenfunktionen - Bewegung ist nicht flüssig",100,100,0xFFFFFFFF);
|
einen Laufzeitfehler verursacht... |
Um welches Objekt handelt e sich bei Direct3D?
Ein Direct3D Device kann es nicht sein, weil es dort keine Funktion namens DrawText gibt.
Kommt der Laufzeitfehler während des Ausführens? Oder kannst du das Programm nicht vollständig kompilieren?
Hast du schonmal hier [Update Kapitel 19 - DrawText] geguckt |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 13.01.2005, 15:01 Titel: |
|
|
KI hat Folgendes geschrieben: | Ein Direct3D Device kann es nicht sein, weil es dort keine Funktion namens DrawText gibt. |
Mich hätte ja eher der Punktoperator stutzig gemacht _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
HomeLess_PunkDrummer JLI Master Trainee
Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 13.01.2005, 15:06 Titel: |
|
|
isn objekt von der Direct3D Klasse ausm Buch, benutz ich selbst noch. *pranz*
jaaa verdammt, ich weiß das wisst ihr selbst... _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
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
|