Schwarzes Bild
Übersicht

![]() |
Raiden93Betreff: Schwarzes Bild |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey,
ich habe mich das schon bei einigen meiner Projekte gefragt,und versucht heraus zu finden,warum immer ein Schwarzes Bild kommt.Wenn ich bei meinen Spielen erst auf Spiel Starten gehe und dann per ESC wieder in mein Menü wechsel. Hier ein Beispiel Code: Code: [AUSKLAPPEN] AppTitle "Beispiel Code"
Graphics 800,600,32,2 SetBuffer BackBuffer() Global FPSTimer = CreateTimer(60) HidePointer ;Laden von Datein Global GFX_HinterGrund = LoadImage("GFX/HinterGrund.bmp") Global GFX_Button_SpielStarten = LoadImage("GFX/Button_SpielStarten.bmp") Global GFX_Button_Optionen = LoadImage("GFX/Button_Optionen.bmp") Global GFX_Button_Beenden = LoadImage("GFX/Button_Beenden.bmp") Global GFX_Spiel = LoadImage("GFX/Spiel.bmp") Global GFX_Maus = LoadImage("GFX/Maus.bmp") MaskImage GFX_Button_SpielStarten,255,255,255 MaskImage GFX_Button_Optionen,255,255,255 MaskImage GFX_Button_Beenden,255,255,255 MaskImage GFX_Maus,255,255,255 ;Allgemeine Variablen Global Modus = 1 ;Cache Variablen Global MH Repeat Cls MH = MouseHit(1) Modus_Function() Kollision_Function() Flip 0 Until Modus = 4 Function Modus_Function() Select Modus Case 1 ;Hauptmenu DrawImage GFX_HinterGrund,0,0 DrawImage GFX_Button_SpielStarten,225,130 DrawImage GFX_Button_Optionen,225,280 DrawImage GFX_Button_Beenden,225,430 DrawImage GFX_Maus,MouseX(),MouseY() Case 2 ;Spiel DrawImage GFX_Spiel,0,0 If KeyHit(1) Modus = 1 End If Case 3 ;Optionen Case 4 ;Beenden End Select End Function Function Kollision_Function() If ImagesCollide(GFX_Maus,MouseX(),MouseY(),0,GFX_Button_SpielStarten,225,130,0) And MH Modus = 2 End If End Function MFG: Raiden93/Kevin |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
auf den ersten blick fällt mir folgendes auf. du erstellst einen timer, rufst diesen aber nie ab was bei flip 0 auf manchen rechnern zu sehr unlustigen ergebnissen führen kann. also irgendwo in der hauptschleife ein Waittimer( timerbez. ) schreiben. meine Vermutung wegen dem Schwarzen Hintergrund: - die Grafik des menüs ist komplett schwarz oder in einer mask farbe ![]() - du springst in den falschen menüstatus und es wird nix angezeigt ganz erhlich ich sehe keinen logischen fehler im code.... Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich schau mir das grade mal an.
Mit den entsprechenden Bilddateien könnte ich dann sogar den Debugger anmachen, aber jetzt muss ich alles durchlesen... Zitat: Graphics 800,600,32,2
Die Angabe zur Farbtiefe kannst du dir im Fenstermodus sparen, es wird eh auf Desktop-Farbtiefe umgestellt. Zitat: Global GFX_[...] = LoadImage("GFX/[...].bmp")
Bitmaps solltest du der Dateigräße wegen nicht verwenden, hier ist PNG besser (falls du die Vollversion besitzt). Tipp am Rande: Sämtliche Befehle die Dateieingabe bekommen, achten beim Pfad nicht auf Groß/Kleinschreibung. Zitat: MaskImage GFX_Maus,255,255,255
Das macht mich stutzig. Haben Mauszeiger nicht normalerweise ein weißes Design? Generell eignen sich zum Masken eher Farben die man niemals in den betreffenden Grafiken verwendet hat/verwenden würde, z.B. 255,0,127 (Magenta). Zitat: Repeat
Cls MH = MouseHit(1) ModusFunction() KollisionFunction() Flip 0 Until Modus = 4 Wie mein Vorposter schon schrieb: Du erstellst einen Timer für die fps und benutzt diesen nichtmehr. Dann versucht dein Rechner die hardwaretechnisch maximal mögliche Framerate rauszuhauen. Bau nach dem Flip ein Waittimer ein. Siehe auch: Hurra, 100 % Auslastung Zitat: ImagesCollide(GFX_Maus,MouseX(),MouseY(),0,GFX_Button_SpielStarten,225,130,0)
Das erzeugt auf manchen Grafikkarten eine Memory-Access-Violation, wenn dein button annähernd rechteckig sein sollte, dann bastel dir selber eine Kollision, da reichen für Rechtecke schon ein paar Ifs die über die Mauskoordinaten feststellen ob die Maus im Bereich des Buttons ist. Ansonsten sehe ich keine Fehler die dein Problem erklären würden. Prüf die Maskfarben nochmal im Bild und Code nach und mach bei dir den Debugger an und benutze seine Befehle(Stop ![]() ![]() |
||
- Zuletzt bearbeitet von hazumu-kun am Mi, Okt 20, 2010 10:12, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man reduziere den Code auf ein lauffähiges Minimum:
BlitzBasic: [AUSKLAPPEN] AppTitle "Beispiel Code" ...und er funktioniert wunderbar. ![]() ![]() ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ups,da habe ich doch ehrlich vergessen den Timer einzusetzen.Ich bedanke mich für die nützlichen Tipps.Sollte ich weiterhin das Problem haben,werde ich die Komplette BB hochladen und euch so zu Verfügung stellen.
Ich werde jetzt die Grafiken erstmal auf 255,0,255 um Texturieren. Und sämtliche Verbesserungen einbauen. EDIT: Ich habe den Fehler Gefunden. Ich habe das Spiel mal im Fullscreen Modus gestartet,und bemerkt das es so geht. Danach habe ich einfach die Grafik(Graphics 801,601,0,2) gestellt um aus zu Probieren ob es geht. Und es geht.Also liegt der Fehler darin das Mein Bild(800,600) nicht in einer 800,600 Grafik passt,und somit zwar am Anfang die Grafik Perfekt dargestellt wird,dennoch bei wiederholtem abrufen,einen Schwarzen Screen hervorhebt. Hätte jemand eine Idee? oder bin ich jetzt gezwungen meine Bilder auf 799,799 zu stellen? MFG: Raiden93/Kevin |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hä?
klar kannst du ein 800 600 bild in einem 800 600 bild darstellen, du hast da noch nen fehler irgendwo. |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
gehen wir doch mal zusammen durch..
- Das Spiel läuft im Full screen ? - beim Start des Spiel wird die 800x600 hintergrund Grafik korrekt angezeigt? - das besagte bild "verschwindet" wenn du vom Spiel (mode =1 ) auf Hauptmenü (mode = 2 ) schaltest ? die Grafikauflösung hat in der Regel nichts mit der Darstellung von Grafiken(nicht scalliert...) zu tun. Auflösung 300x200 kann auch ein 1024x800 großes bild zeigen. Halt nur einen ausschnitt. Der Fehler liegt wo anders. Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mag schon sein das der Fehler woanders liegt^^.Tatsache ist das es im Fullsceen geht und im Fenstermodus,zeigt er einen Blackscreen wenn ich von Modus 1 in 2 wechsel und von 2 wieder auf 1 also wieder ins Hauptmenü.
Mache ich die Settings aber auf 801,601 geht es auch im Fenstermodus. Das ist aber ein wenig verwirrend und stellt mir die Frage ob es überhaupt richtig ist,Menüs in Case Bedingungen auf zu stellen.Dies dürfte aber nicht der Fall sein ,soweit ich weis. MFG: Raiden93/Kevin |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
doch menüs mit case bedingungen ist soweit ok, und ich denke auch mal die gängige Methode.
wenn du sagst es geht nur mit diesen settings, dann kann ich mir irgendwie nur noch vorstellen das es da ein problem zwischen deiner graka und bb gibt. Evt. mal rechner neu starten ? oder mal eine andere 800x600 Grafik verweden. Hatte schonmal den bug das sich eine Exe ohne angesteckte maus bzw tastatur über eine Remoteverbindung durch das Netz nicht starten ließ. ![]() das kann manchmal das banalste überhaupt sein Gruß Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
In anderen Auflösungen geht es ja.Ist ja auch klar weil meine Bilder nur 800x600 groß sind.Aber ist mein Bild Großer als die Auflösung gibt es ein Blackscreen ich lade eben mal mein Game mit BB und Grafik hoch.
EDIT: Hier die BB: https://www.blitzforum.de/upload/file.php?id=9685 |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Lösung ist mehr als Simpel:
Anstatt: BlitzBasic: [AUSKLAPPEN] WaitTimer(FPSTimer) Muss es heißen: BlitzBasic: [AUSKLAPPEN] Flip 0 Erst fertig zeichnen, dann warten - dann hat BB auch Zeit alles zu zeichnen. (Sollte vielleicht nicht so sein, aber ist bei mir so.) |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
bei mir läuft dein Beispielprogramm ohne Probleme. @Xeres, ich glaube nicht, dass das einen Unterschied macht, weil BB ja vorher schon alles in den BackBuffer gemalt hat. Flip tauscht doch nur Front- und BackBuffer. Ich verwende immer diese Konstruktion und bei mir ging sie bis jetzt immer. (Glaube auch bei allen Testern) BlitzBasic: [AUSKLAPPEN] While Not KeyHit(1) mfg, count-doku |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir macht es einen Unterschied. Wo da das Problem liegt, ist mir nicht ganz klar. Wenn ich ein paar Debuglogs einfüge, funktioniert es auch (dann nur im Debug-Modus), vielleicht, weil alle Zeichenanweisungen genug zeit abbekommen haben...
Auf welchem Betriebsystem läuft es denn bei dir, count-doku? |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Raiden93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Xeres du hast vollkommen recht.Jetzt geht es nachdem ich den Timer nach dem Flip gesetzt habe danke ![]() MFG: Raiden93/Kevin |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Komisch dass es bei euch nur so läuft.
Ich habe Windows XP count |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schlechtere Emulierung von DX7 unter Windows7?
BlitzBasic wird halt immer älter und läuft bald nur noch auf Krücken... Nachtrag: The latest release versions of DirectX, DirectX 10 and DirectX 9Ex, are exclusive to Windows Vista. Microsoft claims the reason for this is that there have been extensive changes in the Windows graphics architecture and introduction of the Windows Display Driver Model. oldversion.com/DirectX |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
cool die DX7 hole ich mir in meine sammlung. wer weis die könnt ich evt. noch brauchen für die Zukunft ![]() |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group