[OpenGL] mogl Minimalistic OpenGL - Library [2D]

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

[OpenGL] mogl Minimalistic OpenGL - Library [2D]

Beitrag von Mijikai »

mogl ist eine kleine, leicht zu bedienende 2D OpenGL Library mit
einfachen Funktionen für Sprites und Fonts.

Bild

Version: Test (pre alpha)
Plattform: Windows

Wenn jemand helfen will oder Fragen hat einfach posten :)

Download:
https://www.dropbox.com/s/dfgfkb3ikw4n4 ... a.zip?dl=0

Sonstiges:
Die DLLs sind gepackt !
Es kann zu Fehlarlarm bei AV - Software kommen !
mogl unterstützt momentan nur *.BMP & *.PNG Sprites !

Beispiel:

Code: Alles auswählen

Interface MOGL_FONT
  FontName.s()
  FontSize.i()
  SetColor.i(Color.l)
  GetColor.l()
  Render.i(X.f,Y.f,Text.s)
  Release.i();can be released manuall otherwise moglClose() will clean up all remaining sprites
EndInterface

Interface MOGL_SPRITE
  Width.f()
  Height.f()
  CenterWidth.f()
  CenterHeight.f()
  Render.i(X.f,Y.f,Center.b = #False,Alpha.a = #Null,Angle.f= #Null,Tint.l = #Null)
  Release.i();can be released manuall otherwise moglClose() will clean up all remaining sprites
EndInterface

Import "mogl64.lib"
  moglSprite.i(*Buffer,File.s = #Null$);returns MOGL_SPRITE
  moglFont.i(FontName.s,FontSize.i,Color.l = $FFFFFFFF);returns MOGL_FONT
  moglScreen.i(Width.i,Height.i,Title.s = #Null$,RefreshRate.f = 16);refreshrate in milliseconds (internal render clock) !
  moglWidth.f();screen width
  moglHeight.f()
  moglCenterX();screen width / 2
  moglCenterY()
  moglMessage.i(*Msg = #Null);*Msg fills a MSG structure -> #WM_* -> for keyboard and mouse support !
  moglClear.i(Color.l)
  moglRender.i()
  moglFlip.i()
  moglFrames.i();returns fps
  moglDelta.f();returns the deltatime
  moglExit.i()
  moglClose.i();cleans up everything !
  moglVersion.i()
EndImport

Global *Debug.MOGL_FONT
Global *Sprite.MOGL_SPRITE
Global FPS.i
Global DeltaTime.f
Global Tick.f
Global Scale.f

If moglScreen(400,400)
  *Debug = moglFont("Arial",20)
  *Sprite = moglSprite(?bunny)
  If *Debug And *Sprite
    moglClear($ED1A1A1A)
    Repeat
      Repeat:Until moglMessage() = #Null
      FPS = moglFrames()
      DeltaTime = moglDelta()
      If moglRender()
        
        If Tick > 360:Tick = DeltaTime:Else:Tick + 2 * DeltaTime:EndIf;calculate angle tick -> rotation
        
        Scale = Tick / 100;calculate scale -> tick to scale
       
        glTranslatef_(200,200,0) ;translate to the screen center & apply scale
        glScalef_(Scale,Scale,0)
       
        *Sprite\Render(0,0,#True,0,Tick);render bunny sprites
        *Sprite\Render(0,0,#True,180,-Tick,#Red)
        
        
        glLoadIdentity_();reset matrix
       
        *Debug\Render(10,10,"FPS: " + Str(FPS)) ;render debug text
        
        moglFlip();flip buffers
      EndIf
    Until moglExit()
  EndIf
  moglClose()
EndIf

DataSection
  bunny:
  ;{ File: bunny.png - Size: 301 Bytes
  !dw 05089h, 0474Eh, 00A0Dh, 00A1Ah, 00000h, 00D00h, 04849h, 05244h, 00000h, 02000h, 00000h, 02000h, 00208h, 00000h, 0FC00h, 0ED18h, 000A3h, 00000h, 07406h, 04E52h, 00053h, 000FFh, 000AEh, 095C9h, 0CA9Ch, 00063h, 00000h, 07009h, 05948h, 00073h, 00E00h, 000C4h, 00E00h, 001C4h, 02B95h, 01B0Eh, 00000h, 0CD00h, 04449h, 05441h
  !dw 0C748h, 056BDh, 0165Bh, 02085h, 04408h, 06B8Eh, 01F72h, 0346Eh, 071D7h, 094DDh, 054FDh, 06EA7h, 084A2h, 07C8Eh, 064F5h, 00660h, 05701h, 01FB6h, 08D21h, 06C09h, 0E87Eh, 018EFh, 08B8Eh, 0C194h, 05C19h, 09348h, 0EE01h, 00B81h, 0DE18h, 05D18h, 09395h, 0DE18h, 0D9CFh, 07B98h, 0C70Ch, 0992Bh, 0057Dh, 0CC80h, 003ECh, 049A6h
  !dw 0CF14h, 0F857h, 0EB79h, 03507h, 09AECh, 09CB3h, 00D64h, 019D8h, 01B1Ch, 0B3ABh, 0EDA7h, 00D0Ch, 03074h, 048DEh, 0E5C5h, 0E53Ah, 06336h, 029DCh, 076F3h, 02A81h, 0AB82h, 06C89h, 0982Dh, 0A26Ah, 0F40Ch, 0444Eh, 03031h, 0FBD0h, 0819Ah, 012B3h, 0C000h, 0A50Fh, 051ECh, 0CFAEh, 0E2B3h, 0294Ah, 03D73h, 034C2h, 0DA10h, 04306h
  !dw 0AFBDh, 022A9h, 0E375h, 0856Dh, 0972Ch, 0ABC9h, 07D17h, 02619h, 01FFFh, 044ABh, 024D6h, 058A4h, 014E8h, 05323h, 03879h, 0D686h, 0EC16h, 02BF2h, 06EEDh, 06D1Fh, 09507h, 04B19h, 0D543h, 0D93Ch, 0001Ah, 00000h, 04900h, 04E45h, 0AE44h, 06042h, 00082h
  ;}
EndDataSection
Zuletzt geändert von Mijikai am 26.05.2018 23:50, insgesamt 5-mal geändert.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [OpenGL] mogl Minimalistic OpenGl Library [2D]

Beitrag von ccode_new »

Hallo!

Ganz nett!

Mach mal weiter!

Ich habe dafür meine eigenen Lösungen, und programmiere ab und an daran weiter.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [OpenGL] mogl Minimalistic OpenGl Library [2D]

Beitrag von Mijikai »

ccode_new hat geschrieben:Hallo!

Ganz nett!

Mach mal weiter!

Ich habe dafür meine eigenen Lösungen, und programmiere ab und an daran weiter.
Danke :)
Wirst du zu deinem Projekt noch Informationen veröffentlichen ?
Eventuell können wir uns gegenseitig helfen <)

(Hab grad Keyboard & Mouse handling imlementiert :coderselixir:)
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [OpenGL] mogl Minimalistic OpenGl Library [2D]

Beitrag von ccode_new »

Danke :)
Wirst du zu deinem Projekt noch Informationen veröffentlichen ?
Eventuell können wir uns gegenseitig helfen <)
Gemach, gemach,...

Was willst du denn wissen ? :wink:

Ich habe sicherlich auch noch einige Fragen, aber probiere erst mal selber bestimmte Dinge.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [OpenGL] mogl Minimalistic OpenGl Library [2D]

Beitrag von ccode_new »

Hier einmal eine Frage.
(Auch wenn es hier nicht ganz passt.)

Hast du schon mal mit der Software Blender gearbeitet (und evtl. damit Objekte für OpenGL erstellt) ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [OpenGL] mogl Minimalistic OpenGl Library [2D]

Beitrag von Mijikai »

ccode_new hat geschrieben: Was willst du denn wissen ? :wink:
...

:)
Momentan hab ich ein Problem mit:

Code: Alles auswählen

;glUseFontBitmaps_()

Procedure.i fntRender(Font,X.f,Y.f,Text.s)
  glPushAttrib_(#GL_LIST_BIT)
  glColor4ub_(255,255,255,255)
  glRasterPos2f_(X,Y)
  glListBase_(Font)
  glCallLists_(Len(Text),#GL_UNSIGNED_SHORT,Text)
  glPopAttrib_()
EndProcedure
Das Offset zum Rendern ist nicht die obere linke Ecke des Text-Rects !?
und auf glScalef_() reagiert der Text auch nicht. :coderselixir:
ccode_new hat geschrieben:...
Hast du schon mal mit der Software Blender gearbeitet (und evtl. damit Objekte für OpenGL erstellt) ?
Nein noch nicht, hab bisher nur mal was mit Cinema4D gemacht.
Blender sieht gut aus muss ich mal testen.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [OpenGL] mogl Minimalistic OpenGL - Library [2D]

Beitrag von ccode_new »

Das Offset zum Rendern ist nicht die obere linke Ecke des Text-Rects !?
und auf glScalef_() reagiert der Text auch nicht.
Bei OpenGL ist doch per Standard das Offset die linke untere Ecke.

Wie verwendest du mit deiner Textmatrix "glScalef_()" ?

Und mit glTranslated..(..) kann man ja an eine bestimmte Position springen. (Anbei: Ich habe mir das persönlich ja konvertiert in glLocateXYZ())

Leider kann ich dir aber jetzt aber wahrscheinlich trotzdem noch nicht weiterhelfen.
.........

Interessant wäre eine Lösung zum Import von obj/etc. -3D Modellen.

Zum Erstellen würde ich Blender, bzw. bevorzugt aber Wings3D nutzen.

Das händische Erstellen von 2D/3D -Objekten ist da nicht das wahre.

Mir ist auch bewusst das PureBasic eine auf DirectX/OpenGL basierende 3D - Engine eingebunden hat. (genannt Ogre)
Nur suche ich eine Lösung diese entweder für die OpenGL-Zwecke "zu missbrauchen" oder zu umgehen.

Mir würde für den Anfang ein Import ohne Animation/Shader-Extra/(auch ohne Texturen) genügen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [OpenGL] mogl Minimalistic OpenGL - Library [2D]

Beitrag von Mijikai »

ccode_new hat geschrieben:
Bei OpenGL ist doch per Standard das Offset die linke untere Ecke.

Wie verwendest du mit deiner Textmatrix "glScalef_()" ?

Und mit glTranslated..(..) kann man ja an eine bestimmte Position springen. (Anbei: Ich habe mir das persönlich ja konvertiert in glLocateXYZ())
Ich nutze glOrtho_() alles was ich sonst darstelle ist korrekt.

Code: Alles auswählen

glOrtho_(0,Width,Height,0,-100,100)
Weder glScalef_() noch Window-Resize funktioniert.
Warum nur der Text streikt ist mir unklar.

Scaling z.B.:

Code: Alles auswählen

glScalef_(5,5,1)
fntRender(Font,100,100,"Text")
...

ccode_new hat geschrieben: Interessant wäre eine Lösung zum Import von obj/etc. -3D Modellen.

Zum Erstellen würde ich Blender, bzw. bevorzugt aber Wings3D nutzen.

Das händische Erstellen von 2D/3D -Objekten ist da nicht das wahre.

Mir ist auch bewusst das PureBasic eine auf DirectX/OpenGL basierende 3D - Engine eingebunden hat. (genannt Ogre)
Nur suche ich eine Lösung diese entweder für die OpenGL-Zwecke "zu missbrauchen" oder zu umgehen.

Mir würde für den Anfang ein Import ohne Animation/Shader-Extra/(auch ohne Texturen) genügen.

Ich kenn kein einziges professionelles/kommerzielles 2D/3D Spiel in Ogre.
Eventuell relevant für Obj-Files: http://www.purebasic.fr/english/viewtopic.php?t=68420
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [OpenGL] mogl Minimalistic OpenGL - Library [2D]

Beitrag von ccode_new »

Ich kenn kein einziges professionelles/kommerzielles 2D/3D Spiel in Ogre.
Eventuell relevant für Obj-Files: http://www.purebasic.fr/english/viewtopic.php?t=68420
Das ist doch vollkommen uninteressant ob du ein kommerzielles 2D/3D Projekt/Spiel mit Ogre kennst.

Ogre ist ja nicht schlecht, aber mit PureBasic in Verbindung mit Linux gefällt mir das Ganze noch nicht.

Ich stelle mir noch die Frage: (zeige es mit PureBasic an)

Code: Alles auswählen

;   ___       __       ___      _______           ___  __        ________      ________       ________           ___      ________      ___  ___          ________      ________      ________           _____ ______       ___      _________        ________      ________    _______       ________       ________      ___               ________       ___  ___      _________    ________      _______       ________           ________     
;  |\  \     |\  \    |\  \    |\  ___ \         |\  \|\  \     |\   __  \    |\   ___  \    |\   ___  \        |\  \    |\   ____\    |\  \|\  \        |\   ___ \    |\   __  \    |\   ____\         |\   _ \  _   \    |\  \    |\___   ___\     |\   __  \    |\   __  \  |\  ___ \     |\   ___  \    |\   ____\    |\  \             |\   ___  \    |\  \|\  \    |\___   ___\ |\_____  \    |\  ___ \     |\   ___  \        |\_____  \     
;  \ \  \    \ \  \   \ \  \   \ \   __/|        \ \  \/  /|_   \ \  \|\  \   \ \  \\ \  \   \ \  \\ \  \       \ \  \   \ \  \___|    \ \  \\\  \       \ \  \_|\ \   \ \  \|\  \   \ \  \___|_        \ \  \\\__\ \  \   \ \  \   \|___ \  \_|     \ \  \|\  \   \ \  \|\  \ \ \   __/|    \ \  \\ \  \   \ \  \___|    \ \  \            \ \  \\ \  \   \ \  \\\  \   \|___ \  \_|  \|___/  /|   \ \   __/|    \ \  \\ \  \       \|____|\  \   
;   \ \  \  __\ \  \   \ \  \   \ \  \_|/__       \ \   ___  \   \ \   __  \   \ \  \\ \  \   \ \  \\ \  \       \ \  \   \ \  \        \ \   __  \       \ \  \ \\ \   \ \   __  \   \ \_____  \        \ \  \\|__| \  \   \ \  \       \ \  \       \ \  \\\  \   \ \   ____\ \ \  \_|/__   \ \  \\ \  \   \ \  \  ___   \ \  \            \ \  \\ \  \   \ \  \\\  \       \ \  \       /  / /    \ \  \_|/__   \ \  \\ \  \            \ \__\   
;    \ \  \|\__\_\  \   \ \  \   \ \  \_|\ \       \ \  \\ \  \   \ \  \ \  \   \ \  \\ \  \   \ \  \\ \  \       \ \  \   \ \  \____    \ \  \ \  \       \ \  \_\\ \   \ \  \ \  \   \|____|\  \        \ \  \    \ \  \   \ \  \       \ \  \       \ \  \\\  \   \ \  \___|  \ \  \_|\ \   \ \  \\ \  \   \ \  \|\  \   \ \  \____        \ \  \\ \  \   \ \  \\\  \       \ \  \     /  /_/__    \ \  \_|\ \   \ \  \\ \  \            \|__|   
;     \ \____________\   \ \__\   \ \_______\       \ \__\\ \__\   \ \__\ \__\   \ \__\\ \__\   \ \__\\ \__\       \ \__\   \ \_______\   \ \__\ \__\       \ \_______\   \ \__\ \__\    ____\_\  \        \ \__\    \ \__\   \ \__\       \ \__\       \ \_______\   \ \__\      \ \_______\   \ \__\\ \__\   \ \_______\   \ \_______\       \ \__\\ \__\   \ \_______\       \ \__\   |\________\   \ \_______\   \ \__\\ \__\               ___
;      \|____________|    \|__|    \|_______|        \|__| \|__|    \|__|\|__|    \|__| \|__|    \|__| \|__|        \|__|    \|_______|    \|__|\|__|        \|_______|    \|__|\|__|   |\_________\        \|__|     \|__|    \|__|        \|__|        \|_______|    \|__|       \|_______|    \|__| \|__|    \|_______|    \|_______|        \|__| \|__|    \|_______|        \|__|    \|_______|    \|_______|    \|__| \|__|              |\__\
;                                                                                                                                                                                       \|_________|                                                                                                                                                                                                                                           \|__|
;                                                                                                                                                                                                                                                                                                                                                                                                                                                   
; 
So ein Obj-Importer ist nicht ganz einfach.
Wenn man da Mesh (Da brauch man auch noch so ein ominösen Konverter) verwenden kann wäre das auch etwas.

Ich hoffe ich bekomme da noch eine Lösung hin.
Ich muss mich aber sowieso erst einmal intensiver mit 3D Beschäftigen.

........
Bringt es was wenn du:
glPushMatrix_() und glPopMatrix_() nutzt ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [OpenGL] mogl Minimalistic OpenGL - Library [2D]

Beitrag von Mijikai »

ccode_new hat geschrieben: Das ist doch vollkommen uninteressant ob du ein kommerzielles 2D/3D Projekt/Spiel mit Ogre kennst.
Ogre ist ja nicht schlecht, aber mit PureBasic in Verbindung mit Linux gefällt mir das Ganze noch nicht.
Schlecht nicht aber ich habe kein Bock auf 2 Dokumentationen und einer max. 3 klassigen Engine.
ccode_new hat geschrieben: ...
Bringt es was wenn du:
glPushMatrix_() und glPopMatrix_() nutzt ?

Macht keinen Unterschied.
Antworten