Weiß statt Image?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Firstdeathmaker

Betreff: Weiß statt Image?

BeitragDi, Nov 01, 2005 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab ein sehr komisches Problem: Der Mauszeiger in meinem Spiel ist auf einmal nur noch weiß, ebenso die Schüsse. Wenn ich ein anderes Bild als Mauszeiger lade, wird das weiße Kästchen immer noch angezeigt, es hat immer genau die Maße wie das Bild dass eigentlich da hin sollte. Ich kann mir dass einfach nicht erklären, zumal ich vor dem Einzeichnen noch

Code: [AUSKLAPPEN]
      SetAlpha 1
      SetColor 255,255,255
      SetBlend(ALPHABLEND)
      


mache.

Anbei noch ein Screenshot vom Hauptmenü wo man den Fehler drauf sehen kann (Mit rotem Pfeil markiert). Das weiße Kästchen sollte eigentlich der Mauszeiger sein.


Screenshot
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

bruZard

BeitragDi, Nov 01, 2005 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
SetBlend(ALPHABLEND) macht man in der Regel nur einmal ... danach ist dieses State für OGL für die Laufzeit des Programms gesetzt.

Außerdem: Man muss den Blend-Mode vor der Verwendung eines Befehls setzen der diesen Blendmode mit Parametern versorgt.

Wenn Du also in Deinem Programm ALPHABLEND benutzen willst, setzt Du zuerst den Blendmode und definierst danach für jedes zu zeichnende Objekt den Alphawert.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Firstdeathmaker

BeitragDi, Nov 01, 2005 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
SetBlend(ALPHABLEND) macht man in der Regel nur einmal


Bei meinem Programm wird zwischendrin bei manchen Objekten der Lightblend verwendet, deshalb habe ich dort einen Alphablendbefehl gesetzt. Dass mit der Alphawertzuweisung habe ich auch schon umgestellt, dass hatte aber keine Auswirkungen, weil der Wert unabhängig davon gespeichert wird welcher Blendmode gerade aktiv ist.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

soli

BeitragMi, Nov 02, 2005 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht zeichnest du das Alpha Bild auch zu oft übereinander
ohne zwischendurch Cls auszuführen.
Nur so eine Idee......

Bruzard und Fetze habens mir hier erklärt warum das passiert.
https://www.blitzforum.de/view...p;start=20
solitaire

Firstdeathmaker

BeitragDo, Nov 03, 2005 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab gerade festgestellt, dass sich BMP-Bilder problemlos einzeichnen lassen. Bei den Schüssen tritt nämlich das gleiche Problem auf. BPM´s werden richtig eingezeichnet, .PNG´s nur als komplett weißes Image. Geladen werden die Schussimages so:

Code: [AUSKLAPPEN]
EQ_Info_Weapon.Image = LoadImage(Imagepath)



Und sie werden auch nur einmal eingezeichnet, das hab ich kontrolliert.

Noch etwas kommt mir komisch vor. Bei mir wird der Befehl
SetGraphicsDriver GLMax2DDriver()
nicht erkannt. Ich hab jedoch Version 1.10 installiert.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Justus

BeitragDo, Nov 03, 2005 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du die aktuellsten Treiber und die Qualiätseinstellungen auf maximum?

Firstdeathmaker

BeitragDo, Nov 03, 2005 8:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Jepp, alles sehr aktuell.

Aber daran dürfte es nicht liegen, der Mauzeiger im Spiel direkt ist z.B. das gleiche Image wie der im Hauptmenü, und er wird genauso geladen wie der im Hauptmenü (Über die globale Mini-Gui).
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

bruZard

BeitragDo, Nov 03, 2005 9:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast Du den PNG Loader mittels Code: [AUSKLAPPEN]
Import BRL.PNGLoader
eingebunden?
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

soli

BeitragDo, Nov 03, 2005 10:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
BPM´s werden richtig eingezeichnet,

Ich dachte bmp unterstützt gar kein Alphachannel.
solitaire

bruZard

BeitragDo, Nov 03, 2005 10:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Tun sie auch nicht...
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Firstdeathmaker

BeitragDo, Nov 03, 2005 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, BMP unterstützen natürlich kein Alpha, deshalb nehme ich ja auch PNG´s um die Übergänge zu bekommen.


@ BruZard: Nein, dass habe ich nicht eingebunden, muss man dass extra nochmal machen? Ich meine ich habe bisher auch nie irgentwelche Module einbinden müssen wenn ich mit transparenten PNG´s gearbeitet hab, und ein paar PNG´s funktionieren ja sogar richtig.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

soli

BeitragFr, Nov 04, 2005 6:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du das Problem nicht eingrenzen?
Du könntest eines der ansonsten funktionierenden PNG
an die Stelle setzen, dann siehst du sofort ob es am Code liegt.

Eventuell auch mal testweise direkt vor dem gezeichneten
Mauszeiger ein CLS machen, oder ein Delay danach.
Dann müsstest du sehen können ob der Alphachannel
überzeichnet wird.
solitaire

Firstdeathmaker

BeitragFr, Nov 04, 2005 8:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Es muss irgentwie am Code liegen, dass mit dem ersetzen des PNG´s durch andere hab ich schon gemacht, dann nimmt das weiße Kästchen die Größe des neuen Bildes an.

Wenn ich direkt vor dem zeichnen des Mauszeigers ein CLS setze, wird dieser nur noch alleine auf dem Bildschirm angezeigt, aber auch wieder als weißes Kästchen. Ich hab ne Vermutung, vielleicht liegt es auch an meinem PC?

Hier ist eine compilierte Version des Spieles, könntet ihr die mal ausprobieren
und dann schreiben ob der Mauszeiger im Startmenü weiß ist und ob ein Teil der Schüsse welches das Startschiff abfeuert (Leertaste zum feuern drücken) auch weiß ist? Wenn ja, muss es irgendwie an nem Wackelkontakt mit meinen PNG-Treibern sein, da ja manchmal die PNG´s richtig und manchmal falsch angezeigt werden (z.B. wird der gleiche Mauszeiger des Menü´s im Spiel richtig angezeigt, obwohl die Zeichenroutine die gleiche bleibt).
www.illusion-games.de/build01.rar
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

soli

BeitragFr, Nov 04, 2005 9:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Mauszeiger ist bei mir durchsichtig, quadratisch, hellgrau.
Die Schüsse aus dem Raumschiff scheinen solides weiss zu sein.
(Geht ein wenig schnell um es genau zu sagen.)

Optisch kommt dein Spiel ganz gut daher,
nur hab ich leider bei mir nur 30FPS, was
es ein wenig lahm macht.
solitaire
 

Dreamora

BeitragFr, Nov 04, 2005 10:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Rein weiss wäre eigentlich nur möglich wenn die Textur nicht geladen wird.

Import Brl.PNGLoader wurde oben schon genannt (nur nötig wenn du Framework benutzt).
Eine andere Möglichkeit wäre eine Verwendung von 16Bit Farbtiefe anstelle von 32Bit ...

Vielleicht ist es aber auch nur sonst irgend ein Problem ... mit Strict, Debug und ohne Framework hast du das ganze schonmal durchlaufen lassen, um zu sehen ob es eventuell andere Probleme gibt? (viele vergessen, das Framework leider auch die debugnotwendigen Module für Arrayprobleme und andere Fehler rauswirft, deshalb NIE Framework während der Entwicklung und des Testens)

Übrigens: Gibt es einen Grund, dass du dein Spiel nicht als "GUI Build" gemacht hast (zumal es ja Vollbild läuft)? Dann wäre die Konsole weg die aktuell kommt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Justus

BeitragFr, Nov 04, 2005 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe es jetzt mal kurz ausprobiert. Auch bei mir erscheint nur ein grauer halbtransparenter Kasten.

Kann es vielleicht sein, dass du bevor du das Bild einzeichnest mal

Code: [AUSKLAPPEN]
SetColor 0,0,0


drin hast?

Auf jeden Fall habe ich es auch mal hiermit ausprobiert:

Zitat:
cursor = LoadImage("cursor.png")

SetGraphicsDriver(GLMax2DDriver())
Graphics 1024,768,32,60

SetBlend(ALPHABLEND)

Repeat
Cls

DrawImage cursor,400,300

Flip
FlushMem()
Until KeyHit(KEY_ESCAPE)


Und das lief wunderbar, d.h. es kam dieser Cursor zustande:

user posted image

Firstdeathmaker

BeitragFr, Nov 04, 2005 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Soli: Dass durchsichtig graue kommt daher, dass ich zum testen ob es vielleicht an Setalpha liegt vor dem einzeichnen Alpha auf 0.5 gesetzt hatte, aber es noch nicht wieder rausgenommen hatte. Das Spiel ist noch in einem sehr frühen Stadium, deshalb habe ich es bisher noch nicht vorgestellt, nur das Problem wirft mich total über den Haufen. Es gibt auch noch viel zu optimieren, die 30 FPS werde ich noch hochschrauben können (Bei mir läuft es teilweise mit 999 FPS, aber mein Rechner ist ja nicht präsentativ. Ich werde es daher auch vor Veröffentlichung noch auf meinem alten probieren).


@ Dreamora: Hmm, dass mit dem Textur nicht geladen muss ich nochmal überprüfen, vielleicht sind die Ladepfade falsch, obwohl der doch eigendlich dann einen Fehler angeben müsste?

Ich benutze kein Framework, nur Strict um mich zu nem übersichtlicheren Stil zu zwingen.

Das mit dem GUI-Build wusste ich noch nicht, es hat mich immer gewundert warum die Konsole erscheint, aber danke für den Hinweis!

@ Justus: Nee, setcolor hab ich nicht drin, dann wäre das Bild warscheinlich Schwarz und nicht weiß. Also das Image muss in Ordnung sein, wenn man in einer Station mit "Enter" landet (Bei jeder Station gibt es eine rechteckige Landeluke, manchmal noch etwas falsch gesetzt, ist eben erst Testweise), erscheint der Mauszeiger auch korrekt eingezeichnet.


Edit: Ok, ich habe folgendes noch herausgefunden: Mit dem Laden scheint wohl alles ok zu sein, wenn ich direkt nach dem Laden das Bild einzeln anzeigen lasse ist alles ok. Aber wenn ich jetzt in den normalen Programm das Bild einzeln einzeichne und anzeigen lasse ist das Bild weiß. Es ist also irgentwie so, als ob das Bild zwischendurch irgentwo verändert und mit weiß überschrieben wird.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Dreamora

BeitragFr, Nov 04, 2005 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe gerade versucht dein Problem auch hinzubekommen.
Also der Cursor bleibt bei mir auch weiss. Wenn ich jedoch Cur.png (nehme an das ist der Cursor) mit einer anderen Textur ersetze, ändert sich das ganze nicht.

Könntest du eventuell den Zeichnungspart und auch den Ladeblock für den Cursor angeben?
Eventuell liegts an den Ladeflags oder an einer bestimmten Befehlskombination vor dem Zeichnen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Firstdeathmaker

BeitragSa, Nov 05, 2005 4:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja sicher, hier:

Lademethode (von der TGUI)
Code: [AUSKLAPPEN]
   Method AddCursor(Cursorimagepath:String)
      Local C:CGCURSOR = New CGCURSOR
      C.Image = LoadImage(Cursorimagepath)
      C.PRIOR = 1
      CGGUI_OBJECTS.addlast(C)
      C.CGGUI = Self
   End Method


Und Einzeichenmethode von CGCURSOR
Code: [AUSKLAPPEN]
   Method process()
      SetColor 255,255,255
      'SetBlend(ALPHABLEND)
      'SetAlpha 1.0
      DrawImage Image,CGGUI.MOUSE_X,CGGUI.MOUSE_Y
   End Method
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Justus

BeitragSa, Nov 05, 2005 11:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
@ Justus: Nee, setcolor hab ich nicht drin, dann wäre das Bild warscheinlich Schwarz und nicht weiß.


Ich dachte, denn Schwarz*halbtransparent = Grau (?)

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group