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 

Fragen
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
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 16:27    Titel: Antworten mit Zitat

Also ich habe einen ColorKey für die Sprites gefunden, aber wenn irgendwie macht der keine veränderung, ausser wenn ich den Wert auf 0xffffffff setze sind gar keine Sprites mehr zu sehen.
Was mich nur wundert ist, dass alle anderen nicht veränderten Sprites funktionieren und wenn ich die Hintergrundfarbe bei meinem genauso mache wird es trotzdem angezeigt.
was mache ich da noch falsch?

Oder ich nehme doch das Makro "D3DCOLOR_XRGB(0,0,0)".
Aber in welche der Quellcode Dateien muss ich das reinsetzen und an welche Stelle?

Vielen Dank,
JkerryZ


[Edit] Nach einer Menge Überlegungen und Versuchen ist es mir nun gelungen ein "nach oben Scrolling" einzubauen. Ohne hin und her scrollen, denn das kann ich in diesem Programm nicht gebrauchen.
Doch Leider verwischt alles nach einem Durchlauf der Bitmap alles total, woran liegt das?
[/Edit]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 19:08    Titel: Antworten mit Zitat

Die Fragen kann man nur sehr schwer beantworten, wenn man keinen Quellcode hat. Poste dhc bitte mal den Teil, indem du die Spritetexturen läds und den wo du das Sprite renderst. Ebenso solltest du mal die Scrolling funktion posten, falls du willst, das wir dir helfen. Den ich glaube kaum, das ohne Quellcode jemand deien Fehlr errät.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 20:07    Titel: Antworten mit Zitat

Ok, dann poste ich mal den Quellcode.
Hier der Quellcode der Scrolling funktion:
Code:
void CDirect3D::BeginScene(void)
{
    m_lpD3DDevice->BeginScene();

    // aktuellen Bereich in den Backbuffer kopieren
    m_lpD3DDevice->StretchRect(m_lpSurface,
                               &m_ScrollRect,
                               m_lpBackBuffer,
                               0,
                               D3DTEXF_NONE);

    m_ScrollRect.bottom    -= m_ScrollDirection;
   
   // Wenn wir am Anfang oder am Ende der Oberfläche
    // angekommen sind, wird die Scrollrichtung umgekehrt
    if(m_ScrollRect.bottom == 768 || m_ScrollRect.bottom == 0)
    {
        m_ScrollDirection = -m_ScrollDirection;
    }


Hier der Code wo die Sprite kreiert und die Texturen geladen werden:
Code:
// Sprite kreiern
void CSprite::Create(LPDIRECT3DDEVICE9 lpDevice,CResourceManager* ResManager,float AnimationSpeed)
{
    m_lpDevice = lpDevice;
   
    m_ResManager = ResManager;

    m_AnimationSpeed = AnimationSpeed;
   
    D3DXCreateSprite(m_lpDevice, &m_lpSprite);
       
    m_vScale = D3DXVECTOR2(1.0f,1.0f);

    m_StepX = 10.0f;
    m_StepY = 10.0f;
}

// Textur für das Sprite festlegen
void CSprite::AddTexture(LPDIRECT3DTEXTURE9 lpTexture)
{
    // Beschreibung des zu Grunde liegenden Surfaces
    D3DSURFACE_DESC desc;

    lpTexture->GetLevelDesc(0,&desc);
   
    // Breite und Höhe speichern
    m_Width  = desc.Width;
    m_Height = desc.Height;
   
    m_vRotationCenter = D3DXVECTOR2((float)m_Width/2, (float)m_Height/2);

    // Zeiger auf die Textur speichern
    m_AnimationVec.push_back(lpTexture);
}

// Bewegung des Sprite in Abhängigkeit der Direction
void CSprite::Move(int Direction)
{
    int Framerate = m_ResManager->GetFramerate();



Und hier müsste doch der Alpha-Kanal festgelegt werden im vorletzten Parameter:
Code:
// Oberfläche in Datei speichern
    D3DXSaveSurfaceToFile(Filename,D3DXIFF_BMP,
                          lpSurface,0,NULL);


mfg JkerryZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 20:38    Titel: Antworten mit Zitat

Beim scrollen müssen top und bottom geöändert werden, da sonst das Viereck entweder immer größer oder immer kleiner wird und somit verzerrt wird.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 20:42    Titel: Antworten mit Zitat

Warum brauchst du einen Alphakanal, wenn du eine Oberfläche als bmp speicherst? Ich dachte du wolltest das mit Alphablending auf den bildschrimrendern und nicht in eine Datei schreiben. Zum rendern mit Alphablending fehl auch der folgende Code:
CreateTextureFromFileEX() bei der man den Alphakanal festlegen kann
und XSprite->Draw() wo man Modulatecolor angeben kann und somit das Sprite komplett transparent zeichnen kann.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 21:30    Titel: Antworten mit Zitat

Was ist das Problem mit der bmp Datei?

Und das Problem ist, dass der Hintergrund mit zu sehen ist und das sieht blöd aus, und das will ich machen, dass der nicht mit angezeigt wird, aber ich weiss nicht genau, wo ich das einstellen soll.

Vielen Dank.
JkerryZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 22.06.2004, 21:36    Titel: Antworten mit Zitat

Und beim Scrolling, welches bottom und top muss ich ändern??
Wenn ich alle austausche steht das Bild ganz still.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 23.06.2004, 14:05    Titel: Antworten mit Zitat

Zum scrollen: Ich gehen jetzt einfach mal davon aus, das du Oberfläche hast. Einmal den Bildschirm und einmal eine wesentlich größere, von der immer ein anderer Teil auf dfen Bildschrim kopiert werden soll. Beim kopieren von Oberflöchen gibt man 2 Rechtekce an. Einmal das Ziel und einmal das Quellrechteck. Wenn du NULL übergibts wir AFAIK jeweils die komplette Oberfläche kopiert. Asl Quellrecxhteck muss also eigentlich immer so groß sein wie das Zeilrechteck, wenn du nicht woillst, das das Bidl verzerrt wird.Scrollen könntest du dann so realisieren:
Zieloberflaäche: 1024*768
Quelloberfläche: 1024*(768*3)//3 Bildschrime hoch

DestRect.top=0
DestRect.Bottom=768
DestRect.left=0
DestRect.right=1024

SourceRect.top=ScrollY;
SourceRecr.left=0;
SorceRect.right=DestRect.Right;
SourceRect.bottom=DestRect.Bottom+ScrollY;

Wenn du jetzt Scroll Y änderst, hast du immer den korrekten Bildauschnitt auf dem Bildschirm.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 23.06.2004, 14:07    Titel: Antworten mit Zitat

Um die XSprite nutzen zu könne must du eine Textur anlegen. Das solltest du mit CreateTextureFromFileEx() machen und nicht mit CreateTextjreFromFile(), da du dann einen Colorkey beim laden der Textur angeben kannst. Als Colorkeyfarbe nimmst du logischerweise die Hintergrundfarbe deines Sprites. Lies dir am besten das entsprechende Kapitel aus dem Buch durch, ich weiß das auch alles nur daher.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 23.06.2004, 15:38    Titel: Antworten mit Zitat

Danke erstmal für deine Antwort.
Also, das Scrolling zieht irgendwie die Textur lang und dann wieder zusammen. und warum funktioniert das vor allem seitwärts ohne Probleme?
Und wenn ich das hier einsetze:

SourceRect.top=ScrollY;
SourceRecr.left=0;
SorceRect.right=DestRect.Right;
SourceRect.bottom=DestRect.Bottom+ScrollY;

direkt unter
DestRect.top=0
DestRect.Bottom=768
DestRect.left=0
DestRect.right=1024

dann mault der rum, dass SourceRect nicht Deklariert ist. In welcher funktion muss ich das deklarieren?

Und das mit dem Sprite muss ich jetzt nochmal probieren.
Und vielen Dank nochmal für die Hilfe.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 23.06.2004, 15:44    Titel: Antworten mit Zitat

in genau der, i der du den Blitvorgang aufrufst. Das ist ein kleiner Pseudocode den du entsprechend anpassen must.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 24.06.2004, 20:48    Titel: Antworten mit Zitat

Na gut, ich werde das jetzt noch ein bisschen alles ausprobieren. Und falls ich es doch nicht hinbekomme melde ich mich nochmal.
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
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