|
JLI Spieleprogrammierung
|
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
|
Verfasst am: 01.08.2004, 00:54 Titel: Änderungen im SDK Update |
|
|
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 |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 01.08.2004, 06:34 Titel: |
|
|
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 |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 01.08.2004, 12:09 Titel: |
|
|
Thx, funktioniert jetzt.
Mit den Sprites hab ich zwar keine Fehler mehr jedoch werden sie nicht angezeigt. |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 01.08.2004, 20:23 Titel: |
|
|
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 |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 01.08.2004, 23:36 Titel: |
|
|
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 |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 01.08.2004, 23:43 Titel: |
|
|
Versuch doch erstmal NULL für alles zu übergeben, was ist mit Sprite->Begn(), Sprite->End() rufst du diese Funktionen auf?
C. |
|
Nach oben |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 01.08.2004, 23:47 Titel: |
|
|
Nein die rufe ich nicht auf. mit NULL geht's leider auch nicht. |
|
Nach oben |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 02.08.2004, 00:13 Titel: |
|
|
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 |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 02.08.2004, 00:35 Titel: |
|
|
Vielen Dank, so klappt's jetzt! |
|
Nach oben |
|
|
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 03.04.2005, 22:00 Titel: |
|
|
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 |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 03.04.2005, 22:21 Titel: |
|
|
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 |
|
|
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 04.04.2005, 08:08 Titel: |
|
|
Okay danke ich versuche es hinzukriegen.
Ja er zeigt den fehler beim Debugen an. |
|
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: 04.04.2005, 15:04 Titel: |
|
|
Was is in dem Fall das Debuggen bei dir? Bei mir kommen Fehler immer nur beim Kompilieren/Linken? _________________ "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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.04.2005, 16:55 Titel: |
|
|
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 Kompilieren) |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 04.04.2005, 17:41 Titel: |
|
|
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 |
|
|
|
|
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
|