JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Änderungen im SDK Update
Gehe zu Seite 1, 2, 3, 4, 5  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 01.08.2004, 00:54    Titel: Änderungen im SDK Update Antworten mit Zitat

Hallo , ich habe mir das Summer Update für das Directx SDK gladen. Nun funktionirt die CreateText funkion nicht mehr richtig und die Draw Funktion der Sprites. Dort muss man jetzt einen d3dxvector übergbn ist das richtig? Ich habe die Suchfunktion verwendet aber nix gefunden , ich glaube aber dass das hier schon behandelt wurde.

THX
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 01.08.2004, 06:34    Titel: Antworten mit Zitat

textausgabe schaut jetzt so aus:
Code:

// erstellen
    D3DXFONT_DESC Font = {0};
    strcpy(Font.FaceName, "Times New Roman");
    D3DXCreateFontIndirect(m_lpD3DDevice, &Font, &m_lpD3DFont);

// rendern
    RECT r = { x, y, 0, 0 };
    m_lpD3DFont->DrawText(NULL, Text, -1, &r, DT_CALCRECT, TextColor);
    m_lpD3DFont->DrawText(NULL, Text, -1, &r, DT_CENTER, TextColor); 


das mit den sprites hab ich selber noch nicht ganz überrissen, vielleicht kann das mal jemand zusammenfassen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 01.08.2004, 12:09    Titel: Antworten mit Zitat

Thx, funktioniert jetzt.
Mit den Sprites hab ich zwar keine Fehler mehr jedoch werden sie nicht angezeigt.
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: 01.08.2004, 20:23    Titel: Antworten mit Zitat

Ich denke, dass wir das Problem schonmal hatten. Wie rufst du die Funktion denn auf? Was für einen Z-Wert gibst du an? Geht es, wenn du für die beiden Zeiger NULL übergibst, sagt die Debug-Ausgabe irgendwas?

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 01.08.2004, 23:36    Titel: Antworten mit Zitat

Bei mir sieht das ganze so aus:

Code:

D3DXVECTOR3 m_vPosition  = D3DXVECTOR3(9,9,0);
   D3DXVECTOR3 m_vRotCenter = D3DXVECTOR3((float)(m_HeightMapInfo.Width/2),(float)(m_HeightMapInfo.Height/2),0);

   RECT r = {0,0,m_HeightMapInfo.Width,m_HeightMapInfo.Height};

   HRESULT hr;

   if(FAILED(hr = m_lpHeightMap->Draw(m_lpHeightMapT,
                                &r,
                            &m_vRotCenter,
                            &m_vPosition,
                            0xFFFFFFFF)))
   {
      const char* Err = DXGetErrorDescription9(hr);

        DXTRACE_MSG(Err);

      MessageBox(0,Err,"Fehler 3",MB_OK);
      //MessageBox(0,"Fehler beim zeichnen der Heightmap","Fehler 5",MB_OK);
   }


Der Z-Wert st bei mir 0. Hab jetzt das Icon auch. Dann habe ich die Debug Version ausgewählt aber bis jetzt ist noch keine Meldung gekommen.
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: 01.08.2004, 23:43    Titel: Antworten mit Zitat

Versuch doch erstmal NULL für alles zu übergeben, was ist mit Sprite->Begn(), Sprite->End() rufst du diese Funktionen auf?

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 01.08.2004, 23:47    Titel: Antworten mit Zitat

Nein die rufe ich nicht auf. mit NULL geht's leider auch nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 02.08.2004, 00:13    Titel: Antworten mit Zitat

habs mir jetzt nochmal angeschaut, eine draw funktion sollte etwa so aussehen:
Code:

m_lpSprite->Begin(D3DXSPRITE_ALPHABLEND);

m_lpSprite->SetTransform(&SpriteMatrix);
   
m_lpSprite->Draw(TEX, NULL, NULL, &vPos, 0xFFFFFFFF);

m_lpSprite->End();

...durch die matrix wird die rotation/skalierung gesetzt, zusammengebaut wird sie so:
Code:

// skalierungs-matrix
D3DXMatrixScaling(&matSc, scale.x, scale.y, 1.0f);   

// rotations-matrix
D3DXMatrixRotationZ(&matRot, angle);

// matrizen multiplizieren
D3DXMatrixMultiply(&SpriteMatrix, &matSc, &matRot);


alle transformationen erfolgen immer relativ zum 3. parameter, wenn NULL links-oben.

irgendwie bescheuert, dass man sich für skal./rot. jetzt eine matrix bauen muß, die position aber immer noch über den parameter setzt...da hätte man die position auch noch gleich in die matrix packen können.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 02.08.2004, 00:35    Titel: Antworten mit Zitat

Vielen Dank, so klappt's jetzt!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
City Hunter
Super JLI'ler


Alter: 39
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 03.04.2005, 22:00    Titel: Antworten mit Zitat

Hi ich habe ein Problem, ich habe mir das Dezember Update geladen und jetzte beim debugen zeigt er mit nen fehler an wo da steht:"e:\StarFighter\Sprite.cpp(406): error C2660: 'ID3DXSprite::Draw': Funktion akzeptiert keine 7 Argumente"
das ist der code wo der Fehler angezeigt wird.
Code:

// Sprite zeichnen
void CSprite::Draw(void)
{
   float m_TempRot = m_Rotation * D3DX_PI / 180.0f;

   // Sprite in der passenden Animationsstufe zeichnen
   m_lpSprite->Draw(m_AnimationVec[m_CurrentImage],
                   0,
                &m_vScale,
                &m_vRotationCenter,
                m_TempRot,
                &m_vPosition,
                      ->    0xFFFFFFFF);<-
}


Ich danke mich schon mal fuer die Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
FH
Super JLI'ler


Alter: 36
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 03.04.2005, 22:21    Titel: Antworten mit Zitat

Es hilft ein kurzer Blicjk in die DX-Doku...
DX-Doku hat Folgendes geschrieben:
ID3DXSprite::Draw Method

--------------------------------------------------------------------------------

Adds a sprite to the list of batched sprites.

Syntax

HRESULT Draw( LPDIRECT3DTEXTURE9 pTexture,
CONST RECT *pSrcRect,
CONST D3DXVECTOR3 *pCenter,
CONST D3DXVECTOR3 *pPosition,
D3DCOLOR Color
);
Parameters

pTexture
[in] Pointer to an IDirect3DTexture9 interface that represents the sprite texture.
pSrcRect
[in] Pointer to a RECT structure that indicates the portion of the source texture to use for the sprite. If this parameter is NULL, then the entire source image is used for the sprite.
pCenter
[in] Pointer to a D3DXVECTOR3 vector that identifies the center of the sprite. If this argument is NULL, the point (0,0,0) is used, which is the upper-left corner.
pPosition
[in] Pointer to a D3DXVECTOR3 vector that identifies the position of the sprite. If this argument is NULL, the point (0,0,0) is used, which is the upper-left corner.
Color
[in] D3DCOLOR type. The color and alpha channels are modulated by this value. A value of 0xFFFFFFFF maintains the original source color and alpha data. Use the D3DCOLOR_RGBA macro to help generate this color.

Macht dann 5 Parameter...
Lesen, wenn was unklar is, fragen...
Gruß

FH
<edit>
Beim debuggen zeigt er das an??? Oder meintest du Compilieren? Das was du da schreibst mit den Argumenten is nämlich ein CompilerFehler, oder?
</edit>
_________________
goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
City Hunter
Super JLI'ler


Alter: 39
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 04.04.2005, 08:08    Titel: Antworten mit Zitat

Okay danke ich versuche es hinzukriegen.
Ja er zeigt den fehler beim Debugen an.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 04.04.2005, 15:04    Titel: Antworten mit Zitat

Was is in dem Fall das Debuggen bei dir? Bei mir kommen Fehler immer nur beim Kompilieren/Linken? Shocked
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.04.2005, 16:55    Titel: Antworten mit Zitat

debuggen is, wenn du das Programm unter F10 startest und dann zeilenweise ausfürhst; so kannste Variablen überprüfen, gucken wo en Fehler is usw.

Kompilieren is das Programm automatisch auf Fehler untersuchen zu lassen(beispielsweise durch Projekt Arrow Kompilieren)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 04.04.2005, 17:41    Titel: Antworten mit Zitat

beim kompilieren entdeckst du nur fehler, die im syntax von c++ liegen. (also vergessene klammern, semikolons oder falsche parameter etc).

Wenn sich das programm erstellen lässt und du es ausführen kannst heißt das ja noch lange nicht, dass es auch das tut was es soll. um solche fehler zu finden benutzt man dann das debuggen. man kann einzelne code zeilen schritt für schritt ausführen und sich den inhat der variablen anschauen.
Aber dazu muss das programm erstmal laufen. Auch wenn du auf Debuggen klickst wird dein projekt auch zunächst kompiliert. wenn das geklappt hat kannst du erst dein pojekt debuggen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2, 3, 4, 5  Weiter
Seite 1 von 5

 
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