JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Kapitel 19 Fehler in erstellen sekundären Oberfläche
Gehe zu Seite Zurück  1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

BeitragVerfasst am: 30.06.2005, 19:22    Titel: Antworten mit Zitat

Oh hmm mein Fehler Embarassed

Aber irgendwie bring ich die Parameter nicht so hin, dass es funzt. Es kommt immer der Error:

Code:
   if(FAILED(lpDDSPrimary->Blt(NULL,NULL,NULL,
      DDBLT_COLORFILL |DDBLT_WAIT,NULL)))
   {
      Error("Blt ist fehlgeschlagen");
      return;
   }

_________________
Greetz CorDharel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 30.06.2005, 19:26    Titel: Antworten mit Zitat

Das ist klar, weil du für das leeren einer Surface die Löschspezifikationen nicht übergeben hast:

CPP:
// ///////////////////////////////////////////////////////////////////////////
// PUBLIC
//
// "Leert" den "Workbuffer".
// ///////////////////////////////////////////////////////////////////////////
void directdraw::clear (void)
{
    DEBUG_STACK;

        // Sicherheitscheck
    if (locked_)
        EXCEPTION ("Could not clear the work-surface. Work-surface is locked.");

        // Hilfsstruktur
    ::DDBLTFX directdraw_blitfx;

        // Struktur initialisieren
    ::ZeroMemory (&directdraw_blitfx, sizeof(directdraw_blitfx));

        // Parameter setzen
    directdraw_blitfx.dwSize        = sizeof(directdraw_blitfx);
    directdraw_blitfx.dwFillColor   = 0;

        // Backbuffer Leeren.
    if (directdraw7_work_->Blt (NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &directdraw_blitfx) != DD_OK)
        EXCEPTION ("IDirectDrawSurface7::Blt(); failed!\n\n"
                   "Could not clear the work-surface.");
}

_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

BeitragVerfasst am: 01.07.2005, 13:23    Titel: Antworten mit Zitat

Hmm? Jetzt hab ich doch das bild auf die 2te Surface kopiert und will sie auf der ersten sehen. Wo kommt da das löschen drin vor? Confused

[edit] Jetzt versteh ich gar nichts mehr. Ich kopiere doch den Inhalt von der zweiten Oberfläche auf die erste mit dem Befehl

Code:
lpDDSPrimary->BltFast(10,10,lpDDSurface,NULL,DDBLT_WAIT);


nicht? Dann sollte doch Britney im Programm kommen Question
_________________
Greetz CorDharel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
City Hunter
Super JLI'ler


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

BeitragVerfasst am: 01.07.2005, 22:05    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
doch kann sein. Im Buch stand net, dass wenn du den Code selber abtippst, folgende Zeilen einfügen musst:
CPP:
#pragma comment(lib, "ddraw.lib")


Gruß DirectXer

EDIT: Menno, Patty war schneller Crying or Very sad Wink

Im Buch steht auch drin das du die Lib in den Projekt/Eigenschaften verlinken sollst Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
DirectXer
Dark JLI'ler



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

BeitragVerfasst am: 02.07.2005, 08:48    Titel: Antworten mit Zitat

City Hunter hat Folgendes geschrieben:
DirectXer hat Folgendes geschrieben:
doch kann sein. Im Buch stand net, dass wenn du den Code selber abtippst, folgende Zeilen einfügen musst:
CPP:
#pragma comment(lib, "ddraw.lib")


Gruß DirectXer

EDIT: Menno, Patty war schneller Crying or Very sad Wink

Im Buch steht auch drin das du die Lib in den Projekt/Eigenschaften verlinken sollst Wink


Dann les dir mal meinen nächsten Post durch Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

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

Egal wie ichs auch anstelle, ich krieg es nicht hin Embarassed

So siehts aus:

Main():

Code:
   //sekundäre oberfläche laden
   lpDDSurface = CreateSurfaceFromBitmap("G:\britney.bmp",100,100);


Render():

Code:
//bild anzeigen
   lpDDSPrimary->BltFast(10,10,lpDDSurface,NULL,DDBLT_WAIT);



CreateSurfaceFromImage():

Code:
LPDIRECTDRAWSURFACE7 CreateSurfaceFromBitmap(LPSTR File, int dWidth, int dHeight)
{
   //device context für das bild und die oberfläche
   HDC hBmDC, hSurfDC;

   //handle der zu ladenden bitmap
   HBITMAP hBM;

   //oberflächenbeschreibung
   DDSURFACEDESC2 SurfDesc;

   //zeiger auf die oberfläche
   LPDIRECTDRAWSURFACE7 lpDDSurface;

   //bild laden
   hBM = (HBITMAP)LoadImage(0,File, IMAGE_BITMAP,dWidth,dHeight,LR_LOADFROMFILE);

   //ist ein fehler aufgetreten?
   if(NULL == hBM)
   {
      Error("Fehler 1");
      return NULL;
   }

   //oberflächenbeschreibung initialisierne
   ZeroMemory(&SurfDesc,sizeof(SurfDesc));
   SurfDesc.dwSize = sizeof(SurfDesc);

   //Caps höhe und breite berücksichtigen
   SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;

   SurfDesc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;

   SurfDesc.dwWidth = dWidth;

   SurfDesc.dwHeight = dHeight;

   //oberfläche anlegen
   if(FAILED(lpDD7->CreateSurface(&SurfDesc,&lpDDSurface,NULL)))
   {
      Error("Fehler 2");
      return NULL;
   }

   //device context von fläche holen
   lpDDSurface->GetDC(&hSurfDC);

   //kompatiblen DC für bild anlegen
   hBmDC = CreateCompatibleDC(hSurfDC);

   //bild für DC holen
   SelectObject(hBmDC,hBM);

   //bild in oberfläche kopieren
   BitBlt(hSurfDC,0,0,dWidth,dHeight,hBmDC,0,0,SRCCOPY);

   //Device Context freigeben
   lpDDSurface->ReleaseDC(hSurfDC);

   //DC und bild löschen
   DeleteDC(hBmDC);
   DeleteObject(hBM);

   //zeiger zurückgeben
   return lpDDSurface;

}


Es sollte doch endlich Britney anzeigen Crying or Very sad thinking

Ich wäre sehr dankbar für Hilfe
_________________
Greetz CorDharel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 02.07.2005, 10:23    Titel: Antworten mit Zitat

Wenn Du ICQ hast schreib mich mal an und send mir den Code, ich guck mal kurz drüber Smile

Würd Dir ja sonst meinen DirectDraw Code geben aber ich glaub der währe Dir (noch) etwas zu "hoch" Very Happy
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

BeitragVerfasst am: 06.07.2005, 23:02    Titel: Antworten mit Zitat

Wenn du mir sagst ich soll dich anschreiben, sag doch deine ICQ Nummer Very Happy

Meine ist 98282499

Ich habe nur den Code nicht gepostet weil alle immer meinen "Ah poste nicht alles" und "BAN 4 LIFE" Very Happy Ich werd es jetzt aber trotzdem tun, obwohl ich denke dass der Fehler in einer kleinen Zeile ist. Bitte hasst mich nicht deswegen! Embarassed Aber vielleicht ist ja einer bei der Arbeit und hat bisher nichts zu tun Rolling Eyes

Ich habe die Blitdinge mit ///////////////// versehen (an 2 Stellen, WinMain() und Render()) also bitte zuerst da schauen. Da wird ja wohl der Fehler sein.

Übrigens weiss ich nicht für was die Funktion DeterminePixel ist, die hab ich mal aus dem Forum kopiert, brauch ich da wo ich bin noch nicht soweit ich weiss.

Sorry dass ich nicht auf der CD im Code nachschauen kann, aber CDs verlieren sich halt nun mal schneller als ganze Bücher Smile



CPP:
/////////////////////////////////////////////////////////////////////////////////////
   /////////////////////////////////////////////////////////////////////////////////////

   //sekundäre oberfläche laden
   lpDDSurface = CreateSurfaceFromBitmap("G:\britney.bmp",100,100);


   /////////////////////////////////////////////////////////////////////////////////////
   /////////////////////////////////////////////////////////////////////////////////////


   /////////////////////////////////////////////////////////////////////////////////////
   /////////////////////////////////////////////////////////////////////////////////////

   //bild anzeigen
   lpDDSPrimary->BltFast(10,10,lpDDSurface,NULL,DDBLT_WAIT);

   /////////////////////////////////////////////////////////////////////////////////////
   /////////////////////////////////////////////////////////////////////////////////////


_________________
Greetz CorDharel


Zuletzt bearbeitet von CorDharel am 11.07.2005, 16:18, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



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

BeitragVerfasst am: 07.07.2005, 11:46    Titel: Antworten mit Zitat

hmm, ich hab im Moment keine Zeit, vielleicht guck ich mir den nachher ma an.

BTW: Patricks ICQ-Number steht in seiner Sig. Weiß ich aus eigener Erfahrung Rolling Eyes Vielleicht erlaubt dir ja auch einer, seinen Websace zu benutzen... Dann kannstes uploaden
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
HomeLess_PunkDrummer
JLI Master Trainee


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

BeitragVerfasst am: 07.07.2005, 19:56    Titel: Antworten mit Zitat

Das beste ist wenn du bei komplexen Sachen wie Apis damit anfängst sie einfach zu initialisieren Wink Denn: Funktionen die du nicht kennst, die aber da sind und du hast sie nicht geschrieben verwirren nur. Glaub mir, ich spreche aus Erfahrung Wink
_________________
"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
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

BeitragVerfasst am: 11.07.2005, 16:18    Titel: Antworten mit Zitat

Schaut euch den Code bitte nochmals an. Da passiert ja der Fehler. Ich hab den Rest wieder gelöscht, da der ja funktioniert.
_________________
Greetz CorDharel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

BeitragVerfasst am: 14.07.2005, 18:11    Titel: Antworten mit Zitat

So ich hab jetz was neues herausgefunden. Es geht zwar immer noch nicht Rolling Eyes Wink aber ich weiss jetzt warum man zwei backslashes benötigt bei G:\\britney.bmp.

Ich glaube der Fehler liegt bei der Funktion CreateSurfaceFromImage. Wenn ich die Debugge, und er bei der Zeile


Code:
//bild laden
   hBM = (HBITMAP)LoadImage(0,File, IMAGE_BITMAP,dWidth,dHeight,LR_LOADFROMFILE);


vorbeigeht steht bei hBM immer noch wie am anfang:

Zitat:
CXX0030: Error: expression cannot be evaluated


Das kann doch nicht sein oder Question
_________________
Greetz CorDharel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

BeitragVerfasst am: 21.07.2005, 01:15    Titel: Antworten mit Zitat

Die Lösung zu allen Problemen findet der werte Leser in diesem Thread:

Klick mich
_________________
Greetz CorDharel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GDN-chef
Mini JLI'ler



Anmeldedatum: 15.11.2005
Beiträge: 10

Medaillen: Keine

BeitragVerfasst am: 15.11.2005, 16:45    Titel: LoadImage Problem Antworten mit Zitat

Hallo
Hab ein ahnliches Problem, möchte ein Bild blitten, arbeite auch mit einer 2. Surface

Wie auch immer ich hab hier den Code:
Uploadlink:

[url=http://rapidshare.de/files/7675280/Main.cpp.html ]Main()[/url]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Blubb-Tec
JLI'ler


Alter: 33
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 15.11.2005, 17:24    Titel: Antworten mit Zitat

[quote="CorDharel"]
Code:
CreateSurfaceFromBitmap("G:\britney.bmp",100,100);

/quote]

also ich würde ja nen doppel-\\ benutzen:
CreateSurfaceFromBitmap("G:\\britney.bmp",100,100);

(code/cpp-tags gingen nich wegen (b)(/b))
_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
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, 3  Weiter
Seite 2 von 3

 
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