JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Scrolling 2 Frage

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Pizzabroetchen
Junior JLI'ler



Anmeldedatum: 29.02.2004
Beiträge: 55

Medaillen: Keine

BeitragVerfasst am: 04.03.2004, 20:05    Titel: Scrolling 2 Frage Antworten mit Zitat

Hallo,
ich bin jetzt beim scrollen angekommen und verstehe das nicht so ganz:

// testen, ob das Rechteck breiter als ein Pixel wird
if(m_ScrollRect1.left != m_ScrollRect1.right)
{
// neues Rechteck konstruieren
r1.left = 0;
r1.right = 1024 - m_ScrollRect1.left;
r1.top = 0;
r1.bottom = 768;
m_lpD3DDevice->StretchRect(m_lpBuffer,&m_ScrollRect1,m_lpBackBuffer,&r1,D3DTEXF_NONE);
}

// testen, ob das Rechteck breiter als ein Pixel wird
if(m_ScrollRect2.left != m_ScrollRect2.right)
{
// neues Rechteck konstruieren
r2.left = 1024 - m_ScrollRect2.right;
r2.right = 1024;
r2.top = 0;
r2.bottom = 768;

m_lpD3DDevice->StretchRect(m_lpBuffer,&m_ScrollRect2,m_lpBackBuffer,&r2,D3DTEXF_NONE);
}


// die Oberfläche m_lpBuffer sperren und einen Zeiger
// auf die der Oberfläche Pixel holen
D3DLOCKED_RECT LockedRectBuffer;

m_lpBuffer->LockRect(&LockedRectBuffer,NULL,0);

int PitchBuffer = LockedRectBuffer.Pitch / 4;

D3DCOLOR* PixelsBuffer = (D3DCOLOR*)LockedRectBuffer.pBits;


// die Oberfläche m_lpSurface sperren und einen Zeiger
// auf die der Oberfläche Pixel holen
D3DLOCKED_RECT LockedRectSurface;

m_lpSurface->LockRect(&LockedRectSurface,NULL,0);

int PitchSurface = LockedRectSurface.Pitch / 4;

D3DCOLOR* PixelsSurface = (D3DCOLOR*)LockedRectSurface.pBits;

// Kopieren einer Spalte aus m_lpSurface in m_lpBuffer
for(int i=0;i<768;i++)
{
PixelsBuffer[i * PitchBuffer + m_ScrollRect1.left] = PixelsSurface[i * PitchSurface + m_PosSurface];
}

// beide Oberflächen entsperren
m_lpBuffer->UnlockRect();
m_lpSurface->UnlockRect();

// testen, ob noch gescrollt werden soll, oder ob
// das Ende der Grafik erreicht wurde
if(m_PosSurface < 5*1024)
{
m_PosSurface++;

m_ScrollRect1.left++;
m_ScrollRect2.right++;

if(m_ScrollRect1.left > 1024)
{
m_ScrollRect1.left = 0;
m_ScrollRect2.right = 0;
}
}
}

ScrollRect1.left und ScrollRect2.right werden ja immer um 1 erhöht.
Aber wenn der pc dann oben rechnet r2.left=1024-ScrollRect.right ergibt das doch eine negative Zahl.Genau so wenn StretchRect(m_lpBuffer,&m_ScrollRect2.. ausgeführt wird, gibt der ja dann ein rechteck mit 1025+ als xlänge an...aber so breit ist das Surface doch gar nicht
Wäre echt super wenn mir da mal einer weiter helfen könnte

Mfg
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: 04.03.2004, 20:12    Titel: Antworten mit Zitat

Hast du schonmal versucht mit dem Debugger durchzusteppen? Das ist denke ich in diesem Fall die beste Methode zu verstehen was passiert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Pizzabroetchen
Junior JLI'ler



Anmeldedatum: 29.02.2004
Beiträge: 55

Medaillen: Keine

BeitragVerfasst am: 04.03.2004, 20:55    Titel: Antworten mit Zitat

das habe ich versucht....aber der sagt mir das das Programm keine Debug Informationen enthält und wenn ich haltepunkte setze aktzeptiert der die nicht
Scrolling2 ist mir auch soweit klar bis auf dem teil wo das r2 rechteck mit werten bestückt wird.....
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: 04.03.2004, 21:05    Titel: Antworten mit Zitat

Versuch mal Projekt->aktive Konfiguration festlegen->Debug

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 04.03.2004, 21:07    Titel: Antworten mit Zitat

Pizzabroetchen hat Folgendes geschrieben:
aber der sagt mir das das Programm keine Debug Informationen enthält

Dann musst du die Konfiguration von Release auf Debug setzen. (Erstellen->Aktive Konfiguration festlegen) Dann sollte es funzen Wink

<edit>
Mist, da war Christian schneller
</edit>
_________________
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
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 04.03.2004, 21:23    Titel: Antworten mit Zitat

@TLoP: Dafür ist deins richtiger Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Pizzabroetchen
Junior JLI'ler



Anmeldedatum: 29.02.2004
Beiträge: 55

Medaillen: Keine

BeitragVerfasst am: 04.03.2004, 21:29    Titel: Antworten mit Zitat

ahhh ich danke euch vielmals!
habe es umgestellt und nun klappts
also wenn ich das jetzt richtig verstanden habe springt der wenn man den gültigen Bereich verläßt (der Puffer hat ja nur 1024 auf der X-Achse), das heißt auf 1025 erhöht, automatisch wieder zum anfang der X-Achse

habe ich das nun richtig verstanden.....zum mind. erklärt das so wie das mit dem scrollen funktioniert

mfg
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: 04.03.2004, 21:33    Titel: Antworten mit Zitat

Hast du richtig verstanden, dadurch erreicht man, dass es nach Scrolling aussieht, obwohl nur Speicher kopiert wird. Interessant wäre sowas mal für vertikal und horizontal (also diagonal Smile ) zu programmieren.

C.
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
Seite 1 von 1

 
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