Sprite.pb + DirectX9 funktioniert nur bei 32 Bit Screen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Sprite.pb + DirectX9 funktioniert nur bei 32 Bit Screen

Beitrag von Kurzer »

Hallo zusammen,

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
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Re: Sprite.pb + DirectX9 funktioniert nur bei 32 Bit Screen

Beitrag von dllfreak2001 »

Ja, hängt von der Grafikkarte ab.

In deinem Netbook wird wohl irgendein älterer GMA zum Einsatz kommen. Die sind dafür bekannt, dass sie fast gar nichts ordentlich unterstützen.
Die Teile sind zwar sparsam aber das war es auch schon.
Mal davon abgesehen würde ich 16 Bit Farbtiefe heute nicht mehr einsetzen, da diese auf den meisten Grafikkarten
sowieso nur langsam oder mit Bildfehlern läuft.

Bei mir funzt der Code auch mit DX9...

Win7 x64
ATI Radeon HD 4570 (mobile)
Zuletzt geändert von dllfreak2001 am 10.12.2009 23:55, insgesamt 1-mal geändert.
I´a dllfreak2001
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Sprite.pb + DirectX9 funktioniert nur bei 32 Bit Screen

Beitrag von Kurzer »

Alles klar, danke für die Info, dllfreak. :allright:
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Sprite.pb + DirectX9 funktioniert nur bei 32 Bit Screen

Beitrag von Kaeru Gaman »

@Kurzer

Lass dich mal loben für deine vorbildliche Vorgehensweise.
Manch einer hätte das in Bugs gepostet und vielleicht sogar rumgemotzt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Sprite.pb + DirectX9 funktioniert nur bei 32 Bit Screen

Beitrag von Kurzer »

Danke für die Blumen, Kaeru.

Allerdings bin ich auch schon mal kräftig in das Talbite-Fettnäpfchen gelatscht und habe mich dabei etwas direkter über die vermeintlich schlechte PB-Doku diesbezüglich geäußert. Hab voll die "Welle" gemacht, aber letzendlich lag es nur daran, daß das Threadsafe-Subsystem in den Compileroptionen nicht eingetragen war. :oops:
Das fand freak nicht sonderlich lustig, glaube ich.

Naja, aus Fehlern lernt man.
Aber ich versuche generell vorher ein bißchen logisch über das vermeintlich fehlerhafte Verhalten nachzudenken.

...but nobody is perfect und so beherze auch ich nicht immer die goldene Forumsregel: Erst lesen, dann lesen und drittens lesen. Dann erst fragen. :lol:

Gruß Kurzer
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Antworten