Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Mär 19, 2024 11:21

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Raspberry PI 2 und OpenGL ES
BeitragVerfasst: Di Jun 23, 2015 10:10 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich arbeite seit wenigen Monaten in meiner eigenen Firma und hab vor nicht so langer Zeit mit der Umsetzung des ersten Produktes begonnen.
Dabei nutzte ich ein Raspberry PI 2 für die Zentralle Kontrolle sämtlicher Hardware und Software.
So gehören Kamera, Touch Display, Schrittmotoren und auch eigene Platinen dazu.
Das Touch Display läuft seit kurzem und ich hab mich ein wenig mit dem OpenGL ES support auf dem PI beschäftigt.

Der Speicher ist Shared, man gibt beim Booten an, wieviel vom Arbeitsspeicher als VRAM reserviert werden soll und der wird dann vom 1GB Budget abgezogen.
Ein Treiber nachladen ist nicht notwendig, weil die PI OSes schon von Hause aus mit einem Kernel Modul kommen und entsprechend läuft OGLES2 out of the box.
Allerdings hat das System eine eigenart, die für PC Entwickler ungewohnt sein sollte(einige Konsolen und Mobile Entwickler sollten sowas kennen).
Der PI hat extra Hardware für Bildverarbeitung und erlaubt wie DX12 Swapchain Bildaten in ein Finales Output zu berechnen.

Dafür wird auch eine API bereit gestellt und diese ist notwendig, wenn man überhaupt sein Renderoutput sehen will, denn der OpenGL Context rendert in ein Speicherblock auf dem VRAM und die CPU hat kein Zugriff auf diesen aber die API und so muss man nach dem Swap erst den Puffer in den CPU-Space kopieren.
Hier mal der Einsprungspunkt der API, mit bcm_host.h Header.
Der Kopierprozess wird über DMA geregelt und ist recht flink, im Vergleich zu z.B. ReadPixels von OpenGL.
Die Bildverarbeitung ist auch extrem schnell, weil sie nun mal in ein Chip gegossen ist.
So ist es auf dem PI üblich mit einem 24Bit(888) Kontext zu rendern und dann bei Touch Displays auf 16Bit(565) runter zu gehen und auch nicht alle 60Bilder mit zu nehmen(mein Display macht 50Hz).
Generell haben die GPUs ein Digital Analog Konverter(DAC), welcher sich um die Signal Konvertierung für Ausgabegeräte kümmert aber auch in moderneren GPUs Bildverarbeitung machen kann.
Dadurch wurde erst das DX12 Swapchain überhaupt Möglich. Auch das man ein Spiel mit niederer Auflösung auf kleineren Bild Spielen kann, statt es über den Monitor zu strecken.
Sowas macht der Chip auf dem PI auch und daher ist das Konvertieren, der Farbtiefe, super schnell.

Ich hab ein paar Demos laufen lassen und hatte 60FPS(VSYNC) bei 640x480x24 konvertiert auf 320x240x16.
Also ich könnte Problemlos Multisampled UI auf dem Display rendern und weil nur mein Programm auf dem Touch arbeitet muss ich nur neu zeichnen, wenn es was neues gibt.

Man sollte bedenken, dass der RPI2 ein Quadcore 900MHZ ist und somit unmengen an Rechenpower für Logik hat.

Mal gucken wann ich mal mehr Zeit hab drauf mehr zu machen, als nur ein paar Demos zu starten.
Das erste Dreieck hatte ich auf jedenfall innerhalb von Minuten und nicht Tagen wie bei PS3 oder GP2X.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 21 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.025s | 17 Queries | GZIP : On ]