ich teste gerade ein paar Beispiele der aktuellen PB 4.40 Version.
Dabei fiel mir auf, daß das Sprite.pb Beispiel auf meinem Netbook nur mit einem 32-Bit tiefen Screen funktioniert.
Ändere ich das Subsystem auf DirectX7, dann funktioniert der Code auch mit dem 16 Bit Screen.
Auf meinem Desktop-Rechner funktionieren sowohl 16 Bit als auch 32 Bit Screen unter DirectX9.
Auf beiden Rechnern ist Win XP Home mit DirectX9c installiert.
Die Grafikkarten sind allerdings verschieden.
Ist dieses Verhalten von der Grafikkarte abhängig? Ich hätte jetzt erwartet, daß Funktionen, die der Hardware fehlen, in Software nachgebildet werden und so trotzdem alle DirectX9 Funktionen genutzt werden können.
Ich habe auf dem Netbook auch mal andere Auflösungen versucht - unter anderem die native Auflösung, aber das hat nichts geändert.
Das ist jetz kein akutes Programmierproblem, mich würde es halt nur mal interessieren.
Gruß Kurzer
Hier noch der Code:
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - Sprite example file
;
; (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Sprite system can't be initialized", 0)
End
EndIf
;
; Now, open a 640*480 - 16 bits (65000 colours) screen
;
If OpenScreen(640, 480, 16, "Sprite")
; Load our 16 bit sprite (which is a 24 bit picture in fact, as BMP doesn't support 16 bit format)
;
LoadSprite(0, "D:\PureBasic.bmp", 0)
CopySprite(0,1,0)
Repeat
; Inverse the buffers (the back become the front (visible)... And we can do the rendering on the back)
FlipBuffers()
ClearScreen(RGB(0,0,0))
; Draw our sprite
ClipSprite(0, 0, 0, x, x/8)
DisplaySprite(0, x, 100)
DisplaySprite(1, x, x)
DisplaySprite(0, 600-x, x)
x+1
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
End