Seite 2 von 4

Verfasst: 16.08.2009 11:33
von sharkpeter
@Falko,

nicht CatchImage, sonder CatchSprite ;)

Und die Systeme waren: alle die unten drunter stehen

Gruß Jens

Verfasst: 16.08.2009 12:34
von Thorium
sharkpeter hat geschrieben:@Falko,

nicht CatchImage, sonder CatchSprite ;)

Und die Systeme waren: alle die unten drunter stehen

Gruß Jens
Dann muss es eigentlich an der Graka liegen.
Kannst du mal folgenden Source laufen lassen und schauen was der Debugger für ne Zahl ausgibt? Bei mir ist es 64 und das Bild ist richtig.

Code: Alles auswählen

InitSprite()
OpenWindow(0,100,100,300,200,"Test CatchSprite")
OpenWindowedScreen(WindowID(0),0,0,300,200,0,0,0)
CatchSprite(0, ?Pic)

StartDrawing(SpriteOutput(0))
Debug DrawingBufferPixelFormat()
StopDrawing()


DisplaySprite(0,10,10)
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow

End

Pic: IncludeBinary "F:\Purebasic4_4BetaX86\Examples\Sources\Data\PureBasic.bmp
Pfad muss wieder angepasst werden.

Verfasst: 16.08.2009 12:48
von Falko
Bei mir sind es auch 64 und das Bild wird korrekt angezeigt.

Ein Test aber anstelle mit PureBasiclogo.bmp was im englischen Forum geschrieben wurde, ein 32-Bit-BMP zeigt es nun Spiegelverkehrt an. Komsich.
Aber nur, wenn ich deinen Source mit den hinzugefügten

StartDrawing(SpriteOutput(0))
Debug DrawingBufferPixelFormat()
StopDrawing()

benutze. Ohne dem habe ich das Bild korrekt. Also kann das nicht an
der Grafikkarte liegen.

http://www.purebasic.fr/german/viewtopi ... atch=topic

Hier mit der 32-Bit-Grafik

Code: Alles auswählen

InitSprite()
OpenWindow(0,100,100,400,100,"Test CatchSprite")
OpenWindowedScreen(WindowID(0),0,0,400,100,0,0,0)
CatchSprite(0, ?Pic)

StartDrawing(SpriteOutput(0))
Debug DrawingBufferPixelFormat()
StopDrawing()


DisplaySprite(0,10,15)
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow

End

Pic: IncludeBinary "F:\Purebasic4_4BetaX86\Examples\Sources\Data\PureBasiclogo.bmp"
Debug gibt 64 aus und das Bild ist Spiegelverkehrt und horizontal gekippt.


Gruß Falko

Verfasst: 16.08.2009 13:03
von Thorium
Tatsache, bei mir das gleiche.
Allerdings ist bei mir egal ob StartDrawing() aufgerufen wird oder nicht. In jedem Fall wird das 32bit Bitmap falsch angezeigt.

Verfasst: 16.08.2009 13:49
von Thorium
Und wieder ne neue Info: Tritt mit jedem Subsystem auf ausser DirectX9. Dieses zeigt das Sprite richtig an.

Verfasst: 16.08.2009 13:54
von Falko
Thorium hat geschrieben:Und wieder ne neue Info: Tritt mit jedem Subsystem auf ausser DirectX9. Dieses zeigt das Sprite richtig an.
Bestätigt. :allright:

Verfasst: 16.08.2009 15:02
von sharkpeter
@Thorium,

da der Grund ja nun irgendwie feststeht, habe ich deinen Code nicht
probiert, aber trotzdem danke.

Das mit dem Eintrag in die Compileroptionen stimmt, dann geht es bei
mir auch richtig.

Hier für alle die es auch sehen möchten mal noch ein Zip:

http://www.jhc-software.de/Programme/Pu ... sprite.ZIP

Gruß Jens

Verfasst: 16.08.2009 15:50
von DarkDragon
Da das hier grad in Verbindung mit Bitmaps gebracht wird:
Bitmaps haben im Header eine Angabe für die Höhe, die sowohl positiv, als auch negativ sein kann (je nach dem wie das Bild gespeichert wird, verkehrt herum oder richtig rum).

Verfasst: 16.08.2009 16:34
von Thorium
DarkDragon hat geschrieben:Da das hier grad in Verbindung mit Bitmaps gebracht wird:
Bitmaps haben im Header eine Angabe für die Höhe, die sowohl positiv, als auch negativ sein kann (je nach dem wie das Bild gespeichert wird, verkehrt herum oder richtig rum).
Interessant. Ich dachte .bmp würden immer auf dem Kopf gespeichert.

Verfasst: 16.08.2009 16:45
von Falko
Wenn das so ist, was hier auch in Wiki beschrieben wird, fehlt eigentlich eine Abfrage, zum BMP-Format ob die Höhe positiv oder negativ ist.

http://de.wikipedia.org/wiki/Windows_Bitmap

Nur wäre das dann nicht Spiegelverkehrt, sondern nur auf dem Kopf gestellt, oder? Aber in diesen Beispielen ist es beides.

Die neue Konstante #PB_PixelFormat_ReversedY , wie auch immer man diese verwenden kann, ist nur für die Y-Richtung ausgelegt.

Gruß Falko