Aero unter PB 4.20?

Fragen und Bugreports zur PureBasic 4.0-Beta.
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Aero unter PB 4.20?

Beitrag von Gimbly »

Hallo,

wenn ich richtig verstanden habe, nutzt PB 4.20 jetzt DirectX 9.
Müsste dann bei PB-WindowedScreen-Anwendungen unter Vista nicht auch Aero funktionieren?

Beim Starten meiner EXE wird aber leider immer noch Aero abgeschaltet. Welche Hebel muss man umlegen, damit es nicht abgeschaltet wird?
Gruß
Markus
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

auch unter 4.20 läuft PB noch mit DX7, nur wenn du es Angibst beim erstellen der EXE das auf "SubSystems DirectX9" zugegriffen werden soll, wird auch DX9 genutzt
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

Vielen Dank STARGÅTE!
Gruß
Markus
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

CreateSprite() erzeugt Sprites im PixelFormat 15Bits (DX9)

Beitrag von Gimbly »

Mit DX9 klappt's soweit. Allerdings erzeugt CreateSprite() jetzt Sprites im PixelFormat 15Bits.

Mit folgendem Code kann dies getestet werden. Dazu bitte in den Projekt Einstellungen Subsystem DirectX9 angeben und den Code im Debugger starten. Bei mir (unter Win XP) wird dann 2 ausgegeben, also #PB_PixelFormat_15Bits. Ohne DirectX9 wird dagegen 7, also #PB_PixelFormat_32Bits_BGR ausgegeben. Dieser Code erfüllt übrigens keinen weiteren Zweck, als das beschriebene Phänomen zu demonstrieren. :wink:

Code: Alles auswählen

If InitSprite()=0 : End : EndIf

Breite=300 : Hoehe=200
 
OpenWindow(0,0,0,Breite,Hoehe,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,Breite,Hoehe,0,0,0)

CreateSprite(1,100,100)
If StartDrawing(SpriteOutput(1))
  SpeicherAdresse=DrawingBuffer()
  Debug DrawingBufferPixelFormat()
  StopDrawing()
EndIf

End
Gruß
Markus
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

Hat das jetzt schon mal jemand getestet?
Gruß
Markus
Benutzeravatar
Kiffi
Beiträge: 10620
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Gimbly hat geschrieben:Hat das jetzt schon mal jemand getestet?
ich habe kein
Bild
Hygge
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

Das hat jetzt nichts mit Aero zu tun, sondern rein mit DX9. Ich habe das Phänomen unter XP. Aero habe ich nur zu Hause und da bin ich gerade nicht.
Gruß
Markus
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

ich habs im november auch schon gemerkt... antwort von fred:
Fred hat geschrieben:About the bad quality, for now all the sprite are in 16 bits, which means than gradient sprite like yours is badly rendered. I will add 32 bits sprite support later.
ich hoffe, dass er es nicht vergessen hat und es noch bis zur final implementiert wird.


wegen aero: http://www.purebasic.fr/english/viewtopic.php?t=25643

ich bin mir ziemlich sicher, dass es irgendwie einen workaround gibt, so dass es trotz dx7 noch funktioniert. wenn man z.b. InitEngine3D() benutzt, wird der switch verhindert. :shock:

Code: Alles auswählen

If InitEngine3D() And InitSprite() And OpenWindow(0, 0, 0, 640, 480, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  If OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0) 
    While WaitWindowEvent(10) <> #PB_Event_CloseWindow : Wend 
  EndIf 
EndIf : End
ich hab keine ahnung woran das liegt und mir gehen langsam die ideen aus. wär schön, wenn fred sich mal die sache anschauen könnte, was InitEngine3D() nun da anders macht.

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

Vielen Dank für deine Antwort nco2k. Hat mir sehr geholfen!

Den workaround werde ich heute Abend unter Vista mal testen.
Gruß
Markus
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

Prinzipiell scheint der InitEngine3D()-workaround zu funktionieren. Allerdings muss ich meinen Code dafür an einigen Stellen noch anpassen.
Gruß
Markus
Gesperrt