OpenGL ES Pascal-Header

Diskussionen über Pascal-Programmierung (und Varianten davon)
Autor
Nachricht
carli
8 Bit
Beiträge: 440
Registriert: So Jul 18, 2010 07:43
Wohnort: Dresden
Kontaktdaten:

OpenGL ES Pascal-Header

#1 Beitrag von carli » Di Sep 28, 2010 12:32

Hier der Header für OpenGL ES.

Es ist auch ein Kompatibilitäts-Modus eingebaut, sodass der Header auch mit Desktop-OpenGL 3.0 läuft:

(Sourcode entfernt)

Das ganze müsste noch getestet werden, wir können hier ja noch einige Demo-Programme testen.
Vlt. les ich mich dann mal in die Doku von GLSL-ES rein, damit ich euch bald ein paar Beispielprogs liefern kann.

-- Di Sep 28, 2010 14:39 --

Weitere Informationen:

Infos zu GLES findet ihr hier:
http://www.khronos.org/registry/gles/
Der C-Header ist hier: http://www.khronos.org/registry/gles/api/2.0/gl2.h

Die GLES-Spezifikation (200 Seiten) könnt ihr hier bekommen: http://www.khronos.org/registry/gles/sp ... 1.0.17.pdf
Dazu kommt die GLES-GLSL-Spezifikation, die man auch gelesen haben sollte (100 Seiten): http://www.khronos.org/registry/gles/sp ... 2.0.24.pdf

Hat man die beiden PDF gelesen, sollte es kein Problem mehr sein, eine Grafikengine zu schreiben.
Was noch fehlt ist ein "Einsteigertutorial", dass man überhaupt erst mal nen simplen Farbshader schreibt..

-- Di Sep 28, 2010 14:55 --

So, ich hab mal ein Mercurial-Repos auf Bitbucket angelegt, in dem die Pascal-relevanten Header und Beispielcodes landen werden.

Viel Spaß damit:

https://bitbucket.org/carli/gles-headers

-- Di Sep 28, 2010 15:51 --

So,

ein basic Tutorial ist jetzt auch hochgeladen, es zeichnet einen Farbverlauf.

Demnächst werd ich noch das eine besser kommentieren, und dann eins mit Texturen schreiben.

-- Mi Sep 29, 2010 02:26 --

So,

Ab jetzt gibt es auch ein Beispiel mit einer Textur.
Viel Spaß damit ;)

Für den Desktop-Gebrauch ist die Demo schon zu benutzen
Für die Pandora macht das Cross-Compilat jedoch noch Probleme.

Es soll angeblich mit dieser SDL-Lib besser gehn:
http://github.com/Cpasjuste/sdl-1.2.13_gles

Müsste mal jemand testen.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.

xyta
9 Bit
Beiträge: 826
Registriert: Fr Aug 28, 2009 21:58

Re: OpenGL ES Pascal-Header

#2 Beitrag von xyta » So Okt 31, 2010 22:31

Was ich jetzt schon mal sagen kann ist, dass deine Tutorials/Demos auf meinem PC laufen. Mal sehen ob sich irgendwo noch mehr Infos zu ES auftreiben lassen.

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: OpenGL ES Pascal-Header

#3 Beitrag von Kaworu » Mo Mär 14, 2011 03:20

Hallo carli.

Endlich ist es soweit dass man dank der Hilfe von KidPaddle dein Tutorial für die Pandora kompilieren kann.
Und hier poste ich die bisherigen Ergebnisse:

Beim kompilieren von "gles_tutorial.pas" entstanden keine Fehler sowie keine Warnhinweise.
Auf der Pandora allerdings gibt es noch ein kleines Problem.

Führt man es über die Konsole aus so bekommt man folgende Ausgabe:

Code: Alles auswählen

Beginne Programm
SDL init: 
SDL videomode: Failed loading libGL.so.1
GLES: Error loading GL ES 2.0: Function not found "glActiveTexture"
An unhandled exception occurred at $00000000 :
EAccessViolation : Access violation
  $00000000
  $00008990
So. Das Problem ist also vermutlich dass die libGL.so.1 auf der Pandora garnicht existiert..
Ich vermute den Ort mal einfach unter /usr/lib

Doch sind dort nur folgende libGL-bezogene Dateien enthalten:

Code: Alles auswählen

XXX:/home/XXX# ls /usr/lib | grep libGL
libGLES2D.so.1
libGLES2D.so.1.0.1
libGLES_CM.so
libGLES_CM.so.1
libGLES_CM.so.1.4
libGLES_CM.so.1.4.14.2616
libGLESv2.so
libGLESv2.so.1
libGLESv2.so.1.4
libGLESv2.so.1.4.14.2616
Was ich probiert habe war, nacheinander diese Dateien (bis auf die symbolischen Verknüpfungen) einfach mal in "libGL.so.1" zu benennen und in /usr/lib hinzu zu kopieren.
Das änderte aber nichts am Ergebnis. Also ich komme da erstmal nicht weiter.. entweder müssen mehrere oder andere Dateien umbenannt werden,
im Sourcecode etwas angepasst werden oder sogar noch ein Package auf der Pandora nachinstalliert werden.

Bitte nicht wundern dass ich selbst nicht auf die Lösung komme.. Mit Linux habe ich mich bisher nie ernsthaft beschäftigt,
was ich aber unbedingt ändern möchte ;)

carli
8 Bit
Beiträge: 440
Registriert: So Jul 18, 2010 07:43
Wohnort: Dresden
Kontaktdaten:

Re: OpenGL ES Pascal-Header

#4 Beitrag von carli » Mo Apr 11, 2011 13:29

Sorry, dass ich so spät antworte,

Das Problem liegt daran, dass SDL einen OpenGL-Kontext anfordert und keinen GLES-Kontext.

Ich habe auch mit den Entwicklern im IRC gesprochen, die meinen, es wird kein SDL mit ES geben. Man solle gefälligst den Kontext selbst erstellen mit EGL oder sonstigem.

Ich bin da ziemlich am A***, weil ich selbst keine Pandora zum testen habe. Ich kann aber allerdings mal probieren, ob ich EGL-Header portiert bekomme und damit ein bisschen rumbasteln könnte.

-- Do Apr 14, 2011 09:04 --

So,

ich hab mal Unterstützung für https://github.com/Cpasjuste/sdl-1.2.13_gles eingebaut.

Folgendes braucht man, ums zu testen:
- https://github.com/Cpasjuste/sdl-1.2.13_gles klonen, kompilieren und installieren
- bitbucket.org/carli/gles-headers klonen, kompilieren
- darauf achten, dass die libSDL-1.2.so.0 auf die frisch installierte SDL_GLES-Version zeigt (ldd gles_tutorial) eventuell Symlinks erstellen
- das Tutorial mit ./gles_tutorial starten.

Es müssen auf alle Fälle noch einige Anpassungen gemacht werden.
Aber teste das erst mal, obs so geht.

-- Do Apr 14, 2011 10:39 --

Die Lib scheint bei SDL_GLES_GetProcAddress nicht die richtigen Prozeduren zu finden.
Mal sehn, was ich hinbekomme.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: OpenGL ES Pascal-Header

#5 Beitrag von Kaworu » Do Apr 14, 2011 09:40

Also ich bekomme SDL nicht kompiliert weil mein GCC offenbar keine ausführbaren Dateien erstellen kann.
Erste Fehlermeldung der Config.log ist "gcc: error trying to exec 'cc1': execvp: No such file or directory"

Werde mal später nach "cc1" googeln müssen, oder im IRC fragen.
GCC-4.3.3-r23.1 installiert habe ich durch:

Code: Alles auswählen

sudo opkg update
sudo opkg install gcc
sudo opkg install gcc-symlinks
Offenbar reicht das nicht.. auf Windows fertig kompiliertes zu benutzen war soviel einfacher :)

Hoffentlich bekommt ihr bald eure Pandoras ;)

carli
8 Bit
Beiträge: 440
Registriert: So Jul 18, 2010 07:43
Wohnort: Dresden
Kontaktdaten:

Re: OpenGL ES Pascal-Header

#6 Beitrag von carli » Do Apr 14, 2011 13:58

Soooo,

hier jetzt das Release des GLES 2.0 Headers inklusive der Spezifikation und zwei Beispielprogrammen (buntes Dreieck, texturiertes Dreieck)

https://bitbucket.org/carli/gles-headers/overview

Demnächst wird noch ein Minispiel auf GLES 2.0-Basis folgen. Freut euch schon mal ;)
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: OpenGL ES Pascal-Header

#7 Beitrag von Kaworu » Mi Okt 19, 2011 10:22

Hallo carli und vielen Dank für den OpenGL ES 2.0 Support!
Ich habe es auf meiner Pandora getestet und es funktioniert einwandfrei :)



Nun habe ich folgenden Vorschlag für die nächste PND-Version 1.1.0.0:

Ich lasse alles wie bisher ablaufen, mit dem Zusatz "$SU cp -s /lib/libdl.so.2 /lib/libdl.so" in deinem install-Skript.
Mittlerweile habe ich alle Befehle des Skripts verstanden und weitere Befehle dazugelernt, sodass ich dein Skript nun
folgend erweitern würde:

Erst nach Abschluss aller Anweisungen, lasse ich ein weiteres in der PND beinhaltetes TAR-Archiv namens "Update.tar.gz" entpacken,
welches wiederum bereits mit richtigen Pfadangaben folgende Dinge zusätzlich ins Dateisystem kopiert:

Alle egl-bezogenen Dateien in: /usr/lib/fpc/2.5.1/units/arm-linux/egl
Der ogles2-header und shaderapi in: /usr/lib/fpc/2.5.1/units/arm-linux/opengles2

Zusätzlich kopiere ich dein SDL-Beispiel sowie deine 2 OpenGLES2-Beispiele jeweils in:
/usr/share/doc/fpc-2.5.1/sdl und /usr/share/doc/fpc-2.5.1/opengles2

Zum Schluss, da SU-Rechte noch gegeben sind, würde ich mit "sudo fpc xxx" alle neuen Dateien in /usr/lib/fpc/2.5.1/units/arm-linux kompilieren lassen,
sodass später direkt auf die kompilierten Varianten der libs zugegriffen wird, und man auch ohne SU-Rechten in einem einfachen Verzeichnis mit nur einer
x.pas Datei, ein OpenGLES2-Beispiel kompilieren kann.



Ausserdem werde ich später noch eine Uninstall-Option hinzufügen.
Darum werde ich mich dann selbst kümmern auf einfachste Art und Weise:

Ich entpacke dein FPC-Archiv auf meinem Windows Rechner,
programmiere mir schnell ein Tool welches alle Dateinamen und Pfade erkennt und mir in einer Textdatei mit dazugehörigem Löschbefehl speichert.
Dann noch Verschönerungen in Form von grafischen Rückmeldungen zum Deinstallations-Stand vornehmen.

und fertig ist das Gericht ^^

Was die Löschung der symbolischen Verknüpfungen angeht werde ich wohl eine gesonderte Sicherheitsabfrage einfügen,
da ich annehme dass diese von allen Compilern (auch c++) benötigt werden.



Nochmal vielen Dank für deine Bemühungen carli :-)

carli
8 Bit
Beiträge: 440
Registriert: So Jul 18, 2010 07:43
Wohnort: Dresden
Kontaktdaten:

Re: OpenGL ES Pascal-Header

#8 Beitrag von carli » Mi Okt 19, 2011 11:38

Kaworu hat geschrieben:Erst nach Abschluss aller Anweisungen, lasse ich ein weiteres in der PND beinhaltetes TAR-Archiv namens "Update.tar.gz" entpacken,
welches wiederum bereits mit richtigen Pfadangaben folgende Dinge zusätzlich ins Dateisystem kopiert:

Alle egl-bezogenen Dateien in: /usr/lib/fpc/2.5.1/units/arm-linux/egl
Die einzig wichtige Datei ist eglport.o (für arm-linux kompiliert) und egl.pas.
Kaworu hat geschrieben:Der ogles2-header und shaderapi in: /usr/lib/fpc/2.5.1/units/arm-linux/opengles2
Solange es gefunden wird ;)
Kaworu hat geschrieben:Zusätzlich kopiere ich dein SDL-Beispiel sowie deine 2 OpenGLES2-Beispiele jeweils in:
/usr/share/doc/fpc-2.5.1/sdl und /usr/share/doc/fpc-2.5.1/opengles2
Sehr gut. Steht das dann auch in irgendeiner README oder in der Beschreibung der PND? Ich meine, niemand will sich später noch die Sachen aus dem Forum zusammensuchen.
Kaworu hat geschrieben:Ausserdem werde ich später noch eine Uninstall-Option hinzufügen.
Darum werde ich mich dann selbst kümmern auf einfachste Art und Weise:

Ich entpacke dein FPC-Archiv auf meinem Windows Rechner,
programmiere mir schnell ein Tool welches alle Dateinamen und Pfade erkennt und mir in einer Textdatei mit dazugehörigem Löschbefehl speichert.
Dann noch Verschönerungen in Form von grafischen Rückmeldungen zum Deinstallations-Stand vornehmen.

und fertig ist das Gericht ^^
Im Prinzip musst du bloß den Ordner /usr/lib/fpc entfernen, sowie die Dateien, die in /usr/bin verstreut sind.
Kaworu hat geschrieben:Was die Löschung der symbolischen Verknüpfungen angeht werde ich wohl eine gesonderte Sicherheitsabfrage einfügen,
da ich annehme dass diese von allen Compilern (auch c++) benötigt werden.
Noch schlimmer - Sowohl einige opkg-Pakete als auch die Toolchains als PND setzen die Symlinks. Lass die Symlinks am besten so, die stören keinen und nehmen auch keinen Speicherplatz weg. (sind ja nur Verknüpfungen)


Kaworu hat geschrieben:Nochmal vielen Dank für deine Bemühungen carli :-)
Gern geschehen.
Hier eine Vorschau auf das kommende Game:
Bild
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: OpenGL ES Pascal-Header

#9 Beitrag von Kaworu » Mi Okt 19, 2011 12:28

carli hat geschrieben:Die einzig wichtige Datei ist eglport.o (für arm-linux kompiliert) und egl.pas.
Ich weiß.. dennoch finde ich es nützlich wenn dort auch die C-Quellcodes der Dateien drin sind.
So kann man eventuell schnell was ändern, für die auch C-Programmierer unter uns ;)
carli hat geschrieben:Solange es gefunden wird
Jupp, alles was in dem Ordner: /usr/lib/fpc/2.5.1/units/arm-linux/ steckt, wird gefunden.
Hab ich auch getestet ;)
carli hat geschrieben:Sehr gut. Steht das dann auch in irgendeiner README oder in der Beschreibung der PND? Ich meine, niemand will sich später noch die Sachen aus dem Forum zusammensuchen.
Na klar ^^ In der Beschreibung der PND ganz sicher.. (repo), möglicherweise füge ich es auch im Informationstext der PND hinzu, welcher nach einer erfolgreichen Installation angezeigt wird.
carli hat geschrieben:Noch schlimmer - Sowohl einige opkg-Pakete als auch die Toolchains als PND setzen die Symlinks. Lass die Symlinks am besten so, die stören keinen und nehmen auch keinen Speicherplatz weg. (sind ja nur Verknüpfungen)
Haha, das wäre ja mal lustig ^^ gut, lasse ich dann besser so wie es ist ;)
carli hat geschrieben:Hier eine Vorschau auf das kommende Game:
nice :D Wirst du uns auch den Quellcode dafür zur Verfügung stellen?

Sollte mein Spiel einmal fertig werden gibt es für mich 2 Schwierigkeiten,
zum portieren auf der Pandora:

1. Ich programmiere in OpenGL1.3, da ich noch am lernen bin.
Werd mir also erstmal OpenGL ES 2.0 aneignen müssen.

2. Fließkommazahlen.. Mein Spiel arbeitet mit Massen davon.
Da die Pandora allerdings keine FPU hat, und folglich nur langsam emuliert,
müsste ich auf Festkommazahlen umsteigen. Damit hab ich auch noch nie arbeiten müssen.
Hab mir aber schon zum Thema was angeschaut und verstehe wie sie funktionieren, bzw interpretiert werden.

Arbeitest du in deinem Spiel etwa auch schon mit den Festkommazahlen?
Dazu bräuchte ich aufjedemfall ein Beispiel..

carli
8 Bit
Beiträge: 440
Registriert: So Jul 18, 2010 07:43
Wohnort: Dresden
Kontaktdaten:

Re: OpenGL ES Pascal-Header

#10 Beitrag von carli » Mi Okt 19, 2011 13:12

Kaworu hat geschrieben:
carli hat geschrieben:Hier eine Vorschau auf das kommende Game:
nice :D Wirst du uns auch den Quellcode dafür zur Verfügung stellen?
Momentan ist das Repos mit Zugangsbeschränkung. Aber falls sich jemand findet, der an entsprechendem Spiel mitentwickeln will..
(Ich hege ja immer noch die Hoffnung, dass die Pandora in Massenproduktion geht und es einen kommerziellen AppStore geben wird)
Kaworu hat geschrieben:Sollte mein Spiel einmal fertig werden gibt es für mich 2 Schwierigkeiten,
zum portieren auf der Pandora:

1. Ich programmiere in OpenGL1.3, da ich noch am lernen bin.
Werd mir also erstmal OpenGL ES 2.0 aneignen müssen.
Was darin neu ist, sind die Shader. Die sind aber weniger heftig als du denkst. Ich verweise hier immer auf die DGL-Tutorials. Ansonsten gibts ja die Shaderapi ;)
Kaworu hat geschrieben:2. Fließkommazahlen.. Mein Spiel arbeitet mit Massen davon.
Da die Pandora allerdings keine FPU hat, und folglich nur langsam emuliert,
müsste ich auf Festkommazahlen umsteigen. Damit hab ich auch noch nie arbeiten müssen.
Hab mir aber schon zum Thema was angeschaut und verstehe wie sie funktionieren, bzw interpretiert werden.

Arbeitest du in deinem Spiel etwa auch schon mit den Festkommazahlen?
Dazu bräuchte ich aufjedemfall ein Beispiel..
Ich arbeite mit Fließkomma, aber GLES nimmt auch Integers. Und die Integer-Werte landen automatisch als Float auf der Grafikkarte, wo sie eventuell im Vertex Shader nachskaliert werden können.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.

Kaworu
6 Bit
Beiträge: 78
Registriert: Sa Okt 03, 2009 21:11
Wohnort: Duisburg

Re: OpenGL ES Pascal-Header

#11 Beitrag von Kaworu » Mi Okt 19, 2011 18:33

So, es ist passiert: Version 1.1.0.0 des FPC-Installers ist draussen :D

Hat mich den ganzen Tag gekostet, weil aus welchem Grund auch immer, mehrmaliges Nutzen von fpc in einem Skript mein Hauptskript abbricht..
Egal wieviele sleeps ich überall einsetze -_- Und ich hab erstmal unzählige andere Stellen geändert, bis ich das Problem eindeutig eingegrenzt habe.
Hab das jetzt durch die einmalige Nutzung von fpc gelöst, welche "compile.pas" kompiliert, wodurch über deren uses-Angaben alle noch zu
kompilierenden libs endlich kompiliert werden.

Habs zigmal getestet und es arbeitet einwandfrei und beinhaltet alle Änderungen die bis jetzt gepostet wurden :)

->> http://repo.openpandora.org/?page=detai ... nstall_fpc <<-

carli
8 Bit
Beiträge: 440
Registriert: So Jul 18, 2010 07:43
Wohnort: Dresden
Kontaktdaten:

Re: OpenGL ES Pascal-Header

#12 Beitrag von carli » Do Okt 20, 2011 14:06

Schade, dass man auf der Pandora nicht den vollen Detailgrad des Bildschirms sieht :(

Außerdem hab ich momentan Konzeptionsprobleme mit der Steuerung.
Bei dem Spiel steuert man die zwei Ketten des Panzers getrennt. Auf dem Desktop ist das richtig cool, da man seine Hand auf die Tastatur legen kann und einen Block steuert. Auf der Pandora hingegen muss man erst mal genug griffige Tasten finden und dann auch noch die Koordination 2 Ketten + Geschützturm hinbekommen.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.

Benutzeravatar
kuru
10 Bit
Beiträge: 1032
Registriert: Do Dez 04, 2008 09:13

Re: OpenGL ES Pascal-Header

#13 Beitrag von kuru » Do Okt 20, 2011 15:01

Zur Steuerung, wie wär's mit Turm drehen per L und R, linke Kette D-Pad up und down, rechte Kette Y- und X-Button. Zum Feuern könnte man L und R gleichzeitig drücken.

Benutzeravatar
Infinity
11 Bit
Beiträge: 2429
Registriert: Fr Mär 11, 2011 17:21
Wohnort: Oberhausen
Kontaktdaten:

OpenGL ES Pascal-Header

#14 Beitrag von Infinity » Do Okt 20, 2011 15:42

Wieso nicht fahren mit Nubs Turm drehen mit einen der Nubs (rechts links) und Feuer auf R oder L
Also Nubs vorwärts und rückwärts zum Fahren und rechts links drehen zum Turm drehen.
Oder den Turm mit dem Dpad drehen.

Benutzeravatar
kuru
10 Bit
Beiträge: 1032
Registriert: Do Dez 04, 2008 09:13

Re: OpenGL ES Pascal-Header

#15 Beitrag von kuru » Do Okt 20, 2011 16:02

Weil die zwei Ketten unabhängig voneinander gesteuert werden sollen, eben so wie in einem echten Panzer. Darum ist das nix mit einem Nub alleine.

Edit: Nagut, man könnte iwie die x-achse für linke Kette und y-achse für rechte Kette verwenden, aber das wäre ziemlich strange zu steuern IMO.

Antworten

Zurück zu „Pascal“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast