JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Kapitel 21: Sprites in DirectX 9.c?
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 25.05.2006, 12:44    Titel: Antworten mit Zitat

alexm hat Folgendes geschrieben:
Zitat:

c:\programme\jli beispiele\kapitel_22\spritebounce\direct3d.cpp(93) : error C2660: 'ID3DXFont::DrawTextA' : function does not take 5 arguments
c:\programme\jli beispiele\kapitel_22\spritebounce\direct3d.cpp(96) : error C2660: 'ID3DXFont::DrawTextA' : function does not take 5 arguments
c:\programme\jli beispiele\kapitel_22\spritebounce\direct3d.cpp(130) : error C2664: 'D3DXCreateFontIndirectA' : cannot convert parameter 2 from 'LOGFONT *' to 'const D3DXFONT_DESCA *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
SPRITE.CPP
c:\programme\jli beispiele\kapitel_22\spritebounce\sprite.cpp(177) : warning C4018: '>=' : signed/unsigned mismatch
c:\programme\jli beispiele\kapitel_22\spritebounce\sprite.cpp(191) : error C2660: 'ID3DXSprite::Draw' : function does not take 7 arguments


kann mir da bitte jemand weiterhelfen? Rolling Eyes Rolling Eyes

Klingt so, als würdest du ein anderes DX-SDK verwenden, als das, welches im Buch verwendet wird. D3DX baut nicht auf COM auf, deshalb ist Abwärtskompatibilität nicht zwingend und Parameterlisten ändern sich teilweise von Release zu Release.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
alexm
Mini JLI'ler



Anmeldedatum: 20.11.2005
Beiträge: 15
Wohnort: Wien
Medaillen: Keine

BeitragVerfasst am: 25.05.2006, 13:35    Titel: Antworten mit Zitat

ja, ich benutze das aktuelle - April2006
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 25.05.2006, 18:36    Titel: Antworten mit Zitat

Dann schau am besten in die D3DX-Referenz der MSDN nach den Funktionen, die du brauchst, und was diese an Parameter erwarten:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/dx9_graphics_reference_d3dx.asp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
alexm
Mini JLI'ler



Anmeldedatum: 20.11.2005
Beiträge: 15
Wohnort: Wien
Medaillen: Keine

BeitragVerfasst am: 26.05.2006, 09:35    Titel: Antworten mit Zitat

hab jetzt mal ein paar der Fehler wegbekommen - allerdings weiss ich bei diesem hier nicht weiter:

Code:


//// File: Direct3D.cpp ////

// Erzeugen der D3D-Schrift
void CDirect3D::CreateFont(void)
{
    // Struktur für die Beschreibung der Schriftart
    // anlegen und Elemente mit 0 initialisieren
    LOGFONT    LogFont = { 0 };

    // das Element lfFaceName muss den Namen der
    // gewünschten Schriftart enthalten
    strcpy(LogFont.lfFaceName, "Arial");


    // nach erfolgreichem Aufruf zeigt lpD3DFont
    // auf ein Objekt vom Typ D3DXFont
    D3DXCreateFontIndirect(m_lpD3DDevice,
                           &LogFont,
                           &m_lpD3DFont);
}



hier kommt folgende Fehlermeldung:
c:\programme\jli beispiele\kapitel_22\spritebounce\direct3d.cpp(133) : error C2664: 'D3DXCreateFontIndirectA' : cannot convert parameter 2 from 'LOGFONT *' to 'const D3DXFONT_DESCA *'

in der DXSDK-Help steht:

Code:

HRESULT D3DXCreateFontIndirect(
  LPDIRECT3DDEVICE9 pDevice,
  CONST D3DXFONT_DESC * pDesc,
  LPD3DXFONT * ppFont
);

Zitat:

Parameters
pDevice
[in] Pointer to an IDirect3DDevice9 interface, the device to be associated with the font object.
pDesc
[in] Pointer to a D3DXFONT_DESC structure, describing the attributes of the font object to create. If the compiler settings require Unicode, the data type D3DXFONT_DESC resolves to D3DXFONT_DESCW; otherwise, the data type resolves to D3DXFONT_DESCA. See Remarks.
ppFont
[out] Returns a pointer to an ID3DXFont interface, representing the created font object.


... daraus werd ich aber nicht wirklich schlau. was für eine font-attribut-struktur? ist nicht die vorhandene LOGFONT eh so eine struktur!? Shocked Sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
alexm
Mini JLI'ler



Anmeldedatum: 20.11.2005
Beiträge: 15
Wohnort: Wien
Medaillen: Keine

BeitragVerfasst am: 26.05.2006, 10:01    Titel: Antworten mit Zitat

hab jetzt den code auskommentiert und folgendes draus gemacht:


Code:


// Erzeugen der D3D-Schrift
void CDirect3D::CreateFont(void)
{
   
   D3DXFONT_DESC font_desc;    // Font structure
   ZeroMemory(&font_desc, sizeof(D3DXFONT_DESC));

   font_desc.Height = 15;
   strcpy(font_desc.FaceName,"Arial");

   D3DXCreateFontIndirect( m_lpD3DDevice, &font_desc, &m_lpD3DFont );

}




jetzt kompiliert das beispiel und startet auch, allerdings bleibt nach der message-box der bildschirm schwarz - was sollte da zu sehen sein !??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 26.05.2006, 10:08    Titel: Antworten mit Zitat

Also der 2. Parameter der Funktion erwartet 'D3DXFONT_DESC', musst du auch verwenden, ist nämlich nicht dasselbe wie 'LOGFONT'... ;)

Zitat:
jetzt kompiliert das beispiel und startet auch, allerdings bleibt nach der message-box der bildschirm schwarz - was sollte da zu sehen sein !??


Ööhm, keine Ahnung, jedenfalls initialisiert diese Funktion nur ein Font-Objekt und schreibt noch nichts, von daher wäre es zu erwarten, dass nichts zusehen ist... ;)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
alexm
Mini JLI'ler



Anmeldedatum: 20.11.2005
Beiträge: 15
Wohnort: Wien
Medaillen: Keine

BeitragVerfasst am: 26.05.2006, 10:13    Titel: Antworten mit Zitat

*loool*
na dann ...
ich dachte da ist irgendeine sprite-animation oder so zu sehen ...

hmmm ... um das einfacher zu gestalten:
ich würde gerne ein sprite darstellen und bewegen. was kann ich mir dazu am besten ansehen?



nachtrag:
aber schau mal im beispiel gibt es diese funktion:
Code:

// Diese Methode zeichnet eine Ellipse
void CDirect3D::DrawEllipse(int x1,int y1, int x2, int y2, LPDIRECT3DSURFACE9 lpSurface)
...etc...


demnach müsste ja was gezeichnet werden Question
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 26.05.2006, 10:19    Titel: Antworten mit Zitat

Nunja, woran's da hängt lässt sich jetzt schwer sagen, zumindest ohne genau zu wissen, was die Funktion macht und wie das Surface initialisiert worde... ;)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 26.05.2006, 13:53    Titel: Antworten mit Zitat

alexm hat Folgendes geschrieben:
nachtrag:
aber schau mal im beispiel gibt es diese funktion:
Code:

// Diese Methode zeichnet eine Ellipse
void CDirect3D::DrawEllipse(int x1,int y1, int x2, int y2, LPDIRECT3DSURFACE9 lpSurface)
...etc...



demnach müsste ja was gezeichnet werden Question

Ohne jetzt ne große Ahnung davon zu haben, von welchem Beispiel genau ihr sprecht (Razz) - wenn diese Funktion in dem Beispiel existiert, heißt das noch lange nicht, dass sie auch aufgerufen wird Wink
Schau am besten mal nach, ob dies wirklich der Fall ist.
Bei dem von dir zitierten Codeausschnitt handelt es sich nur um die Klassendefinition.
Ein Aufruf würde so (oder ähnlich) aussehen:
CPP:
//Speicherreservierung für die Klassen bzw. Aufruf deren Konstruktoren
CDirect3D d3d_class;
CDirect3D* d3d_class_pointer;
//[...]
//Aufruf der DrawEllipse-Methode
//1. über normale Klasse
//2. über Zeiger auf Klasse
d3d_class.DrawEllipse(...);
d3d_class_pointer->DrawEllipse(...);


PS: Für C++ Codes haben wir hier die netten CPP-Tags, die den Code weitaus lesbarer machen Wink
Du brauchst nur statt [code ]dein code[/code ] das hier schreiben: [cpp ]dein code[/cpp ]
(natürlich ohne Leerzeichen vor der schließenden Klammer.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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