OpenGl Gadget Spieletauglich?
-
- Beiträge: 972
- Registriert: 04.10.2004 18:42
- Computerausstattung: Amiga, LinuxMint, Windows7
- Wohnort: gotha
- Kontaktdaten:
OpenGl Gadget Spieletauglich?
hallo,
hab da mal ne fundamentale Frage:
ist das opengl gadget spieletauglich?
unter windows benutze ich ein api-fenster , welches man halt mit dmscreensettings auch
zum fullscreen machen kann
bei einem tool benutze ich ein imagegadget und missbrauche das image als opengl anzeige
und unter linux benutze ich einen sdl screen , entweder fenster oder fullscreen
aber ich bin es nun irgendwie leid, für jedes ding andere mouse und tastaturabfragen und somit
einen riesen code zu haben.
ich wünsch es mir halt einheitlich und eben jetzt auch auf beiden systemen auf purebasic v6 umsteigen.
darum die frage, ist das opengl gadget spieletauglich, ist die framebremse zuverlässig?
(das beste wäre, man könnte openscreen und openwindowed screen als openglausgabe benutzen)
hab da mal ne fundamentale Frage:
ist das opengl gadget spieletauglich?
unter windows benutze ich ein api-fenster , welches man halt mit dmscreensettings auch
zum fullscreen machen kann
bei einem tool benutze ich ein imagegadget und missbrauche das image als opengl anzeige
und unter linux benutze ich einen sdl screen , entweder fenster oder fullscreen
aber ich bin es nun irgendwie leid, für jedes ding andere mouse und tastaturabfragen und somit
einen riesen code zu haben.
ich wünsch es mir halt einheitlich und eben jetzt auch auf beiden systemen auf purebasic v6 umsteigen.
darum die frage, ist das opengl gadget spieletauglich, ist die framebremse zuverlässig?
(das beste wäre, man könnte openscreen und openwindowed screen als openglausgabe benutzen)
amiga rulez...
Rebirth Software
Rebirth Software
Re: OpenGl Gadget Spieletauglich?
Tja, wenn man sich so weit rauswagt ist man manchmal der erste Erkunder einer Sache.
Was meinst Du mit Framebremse, ScreenOutput() bzw. WindowOutput() ? Meinst Du mit SDL den integrierten PB Layer oder einen selbst-eingebundenen? Ich bin mir nämlich nicht mehr sicher ob es noch Teil von PB ist... ich interessiere mich ein wenig für SDL2 weil da ja auch ein bisschen mehr mit Sound geht, aber wohl nicht auf PB :/
Du könntest auch die Abfragen abstrahieren und wrappen, aber ich glaube das weisst Du schon.
Was meinst Du mit Framebremse, ScreenOutput() bzw. WindowOutput() ? Meinst Du mit SDL den integrierten PB Layer oder einen selbst-eingebundenen? Ich bin mir nämlich nicht mehr sicher ob es noch Teil von PB ist... ich interessiere mich ein wenig für SDL2 weil da ja auch ein bisschen mehr mit Sound geht, aber wohl nicht auf PB :/
Du könntest auch die Abfragen abstrahieren und wrappen, aber ich glaube das weisst Du schon.
Code: Alles auswählen
Prototype _MouseX(*udata) ; *udata = #NULL, Window Handle oder sowas...
Declare opengl_Mousex(*udata)
Declare sdl_MouseX(*udata)
Declare d3d_MouseX(*udata)
Global _MouseX._MouseX ; = init
-
- Beiträge: 972
- Registriert: 04.10.2004 18:42
- Computerausstattung: Amiga, LinuxMint, Windows7
- Wohnort: gotha
- Kontaktdaten:
Re: OpenGl Gadget Spieletauglich?
mit "framebremse" meinte ich
AddWindowTimer(0, 1, 16) ; about 60 fps
mein problem ist, dass ich eben nicht mehr für jedes system nen anderen code will
seh ich jetzt grad bei meinem spiel bei den mouse und tastatur abfragen
hier muss ich den halben gameloop umschreiben
leider kann man mit opengl nicht direkt auf einen screen malen, also bleibt nur
noch openglgadget
AddWindowTimer(0, 1, 16) ; about 60 fps
mein problem ist, dass ich eben nicht mehr für jedes system nen anderen code will
seh ich jetzt grad bei meinem spiel bei den mouse und tastatur abfragen
hier muss ich den halben gameloop umschreiben
leider kann man mit opengl nicht direkt auf einen screen malen, also bleibt nur
noch openglgadget
amiga rulez...
Rebirth Software
Rebirth Software
-
- Beiträge: 972
- Registriert: 04.10.2004 18:42
- Computerausstattung: Amiga, LinuxMint, Windows7
- Wohnort: gotha
- Kontaktdaten:
Re: OpenGl Gadget Spieletauglich?
...und fullscreen, also ich weiss nicht ob die meisten heute noch
gespannt vorm pc sitzen und nen offlinespiel fullscreen zocken
wohl meist im fenster um nebenbei noch was zu machen oder so
den fullscreen würd ich halt faken: rahmenloses fenster erstellen, gadget erstellen
fenster auf desktop maximieren, gadgetinhalt wird gestretched
gespannt vorm pc sitzen und nen offlinespiel fullscreen zocken
wohl meist im fenster um nebenbei noch was zu machen oder so
den fullscreen würd ich halt faken: rahmenloses fenster erstellen, gadget erstellen
fenster auf desktop maximieren, gadgetinhalt wird gestretched
amiga rulez...
Rebirth Software
Rebirth Software
Re: OpenGl Gadget Spieletauglich?
Ich bin kein Spiele Programmierer, aber OpenGL Gadget ist schon rechts schnell.
Solltest aber kein Window Menu verwenden, da dieser denn EventLoop anhält.
Bin aber der Meinung doch besser die OpenWindowedScreen zu verwenden und die Gadgets da rum zu platzieren.
Um auf den Screen zu malen ist es besser vorher alles in Sprites zu malen und diese dann bei bedarf einblenden.
Sollte somit mega schnell sein.
Solltest aber kein Window Menu verwenden, da dieser denn EventLoop anhält.
Bin aber der Meinung doch besser die OpenWindowedScreen zu verwenden und die Gadgets da rum zu platzieren.
Um auf den Screen zu malen ist es besser vorher alles in Sprites zu malen und diese dann bei bedarf einblenden.
Sollte somit mega schnell sein.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
-
- Beiträge: 972
- Registriert: 04.10.2004 18:42
- Computerausstattung: Amiga, LinuxMint, Windows7
- Wohnort: gotha
- Kontaktdaten:
Re: OpenGl Gadget Spieletauglich?
das problem ist, habs eben nochmal getestet, man kann nicht mit opengl in einen screen oder windowed screen reinzeichnen
..ausser bildschirm löschen
aber danke für den tip mit dem windowmenü
..ausser bildschirm löschen

aber danke für den tip mit dem windowmenü
amiga rulez...
Rebirth Software
Rebirth Software
- TroaX
- Beiträge: 684
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: OpenGl Gadget Spieletauglich?
Wieso bremst du das überhaupt? Ich würde einfach eine Delta-Time verwenden, die man mit allen Bewegungen multipliziert. Dadurch erhälst du eine gleichbleibende Geschwindigkeit trotz schwankender Framerate. Bremsen tut dann VSync oder ein Framelimiter (z.B. vom GPU-Treiber). Ich würde niemals davon ausgehen, das jeder Rechner 60 FPS schafft, noch würde ich einem Monitor mit mehr als 60 Hz das Tearing zumuten wollen, welches die Differenz zwischen Hz und FPS mit sich bringen kann.xperience2003 hat geschrieben: 19.12.2022 18:41mit "framebremse" meinte ich
AddWindowTimer(0, 1, 16) ; about 60 fps
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Re: OpenGl Gadget Spieletauglich?
Code: Alles auswählen
Procedure FrameDelay(Frames = 30)
Static time
Protected diff_time, delay_time
If time
diff_time = ElapsedMilliseconds() - time
delay_time = (1000 / Frames) - diff_time
If delay_time > 0
Delay(delay_time)
EndIf
EndIf
time = ElapsedMilliseconds()
ProcedureReturn delay_time
EndProcedure
Global ExitApplication
If OpenWindow(0, 100, 200, 600, 400, "Test", #PB_Window_SystemMenu)
CanvasGadget(0, 0, 0, WindowWidth(0), WindowHeight(0), #PB_Canvas_Border)
Repeat
Repeat
; Dispatch Window Evnts
Select WindowEvent()
Case #PB_Event_CloseWindow
ExitApplication = #True
Case #PB_Event_Gadget
Case #Null
Break
EndSelect
ForEver
; Drawing an Display
If StartDrawing(CanvasOutput(0))
Box(0, 0, WindowWidth(0), WindowHeight(0), #Gray)
x + 4
y + 1
If x > WindowWidth(0)
x = 0
EndIf
If y > WindowHeight(0)
y = 0
EndIf
Box(x, y, 16, 16, #Blue)
StopDrawing()
EndIf
FrameDelay(30)
Until ExitApplication
EndIf
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
-
- Beiträge: 972
- Registriert: 04.10.2004 18:42
- Computerausstattung: Amiga, LinuxMint, Windows7
- Wohnort: gotha
- Kontaktdaten:
Re: OpenGl Gadget Spieletauglich?
danke für das beispiel.
ich benutze sowas ähnliches.
die numer mit der deltatime und alles multiplizieren hatte ich mir mal abgewöhnt,
wenn hunderte extra multiplikationen der grund sind, dass es erst ruckelt
..warn spass
mir ging es hier lediglich nur um die brauchbarkeit des opengl gadgets und die verlässlichkeit des timers
es scheint beides meinen ansprüchen zu dienen
meine games sind lowlevel gl, die laufen auch auf nen 10 jahre alten rechner flüssig
und ich will einfach nur einen einheitlichen code, der überall gleich läuft
und das tut es anscheinend
ich habe hier einen alten rechner mit windows7 und ubuntu fürs inet
ich kann nun mit beiden system auf den projektordner zugreifen
und nebenbei weiterprogrammieren und am ende für
beide systeme kompilieren
ich benutze sowas ähnliches.
die numer mit der deltatime und alles multiplizieren hatte ich mir mal abgewöhnt,
wenn hunderte extra multiplikationen der grund sind, dass es erst ruckelt

..warn spass
mir ging es hier lediglich nur um die brauchbarkeit des opengl gadgets und die verlässlichkeit des timers
es scheint beides meinen ansprüchen zu dienen
meine games sind lowlevel gl, die laufen auch auf nen 10 jahre alten rechner flüssig
und ich will einfach nur einen einheitlichen code, der überall gleich läuft
und das tut es anscheinend
ich habe hier einen alten rechner mit windows7 und ubuntu fürs inet
ich kann nun mit beiden system auf den projektordner zugreifen
und nebenbei weiterprogrammieren und am ende für
beide systeme kompilieren
amiga rulez...
Rebirth Software
Rebirth Software
-
- Beiträge: 972
- Registriert: 04.10.2004 18:42
- Computerausstattung: Amiga, LinuxMint, Windows7
- Wohnort: gotha
- Kontaktdaten:
Re: OpenGl Gadget Spieletauglich?
tastaturabfrage im opengl gadget unter linux scheint ein problem zu haben
die eventabfrage funktioniert, die tasten auch
allerdings nur #pb_key_space
mit Debug GetGadgetAttribute(0,#PB_OpenGL_Key)
hab ich mir die konstanten anzeigen lassen, sie scheinen mit
den #PB_Key_irgendwas nicht überein zu stimmen..nur space
was stimmt da nicht?
Code: Alles auswählen
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_Gadget
If EventGadget()=0 ;das glgadget
Select EventType()
Case #PB_EventType_RightClick
GameInput_RightFireClick=1 ;funktioniert
Case #PB_EventType_LeftButtonDown
GameInput_LeftFireDown=1 ;funktioniert
Case #PB_EventType_LeftClick
GameInput_LeftFireHit=1 ;funktioniert
Case #PB_EventType_RightButtonUp
GameInput_RightFireClick=0 ;funktioniert
Case #PB_EventType_LeftButtonUp
GameInput_LeftFireDown=0
GameInput_LeftFireHit=0
Case #PB_EventType_KeyDown ;keydown ansich funktioniert
; Debug GetGadgetAttribute(0,#PB_OpenGL_Key)
Select GetGadgetAttribute(0,#PB_OpenGL_Key)
Case #PB_Key_Space
gameclose=1
Case 65470;#PB_Key_F1
cameramode=0
Case 65471;#PB_Key_F2
cameramode=1
Case 65472;#PB_Key_F3
cameramode=2
Case 65473;#PB_Key_F4
cameramode=3
EndSelect
Case #PB_EventType_MouseMove
mousex=GetGadgetAttribute(0, #PB_OpenGL_MouseX)
mousey=GetGadgetAttribute(0, #PB_OpenGL_MouseY)
EndSelect
EndIf
EndSelect
Until Event=0
allerdings nur #pb_key_space
mit Debug GetGadgetAttribute(0,#PB_OpenGL_Key)
hab ich mir die konstanten anzeigen lassen, sie scheinen mit
den #PB_Key_irgendwas nicht überein zu stimmen..nur space
was stimmt da nicht?
amiga rulez...
Rebirth Software
Rebirth Software