Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RPi graficke biblioteke
#1
U potrazi za nekim grafickim bibliotekama zgodnim za C/C++ programiranje na RPi naletoh na OpenVG.
https://github.com/ajstarks/openvg

U pitanju su vrlo proste bazicne funkcije za crtanje ali koje ne zahtevaju X11, Qt ili desktop okruzenje uopste, jednostavno preko OpenGL (EGSL) se obraca grafickom procesoru i crta trazene funkcije.

Biblioteka i nekoliko primera se vrlo lako prevode i sve radi na prvu!

Ovo i jos dodatno Boost biblioteka su zakon, to moze da radi opako dobro ...
https://www.boost.org
Reply
#2
Ukratko, za embeded potrebe (sa grafikom od nule, bez desktop-a) Raspbian Lite je super-zgodna distribucija.

RASPBIAN STRETCH LITE
https://www.raspberrypi.org/downloads/raspbian/

To vam je minimum potreban za razvoj, sve ostalo se dodatno instalira sa APT menager.
Gore spomenuti primer radi na takvoj platformi i to sa vrlo solidnim perfomansama, dusu dalo za koje-kakve HMI-ove Wink
Reply
#3
PHP Code:
// first OpenVG program
// Anthony Starks (ajstarks@gmail.com)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "VG/openvg.h"
#include "VG/vgu.h"
#include "fontinfo.h"
#include "shapes.h"

int main() {
    
int widthheight;
    
char s[3];

    
init(&width, &height);                    // Graphics initialization

    
Start(widthheight);                    // Start the picture
    
Background(000);                    // Black background
    
Fill(44772321);                    // Big blue marble
    
Circle(width 20width);            // The "world"
    
Fill(2552552551);                    // White text
    
TextMid(width 2height 2"hello, world"SerifTypefacewidth 10);    // Greetings 
    
End();                                       // End the picture

    
fgets(s2stdin);                           // look at the pic, end with [RETURN]
    
finish();                                // Graphics cleanup
    
exit(0);

Manji program od ovoga u C/C++ tesko da moze da se napravi sa OpenGL grafikom : )
Znate kako radi taj GPU to, kao "dobar dan", broj vertexa na sceni moze da se meri desetinama hiljada i da radi dinamicno animaciju bez problema!
Reply
#4
Dodatno, zasto OpenGL, zasto OpenVG, OpenGLES, Collada ... ?
To su standardi i program pisan za to ce raditi sad i narednih 10+ godina, u opticaju su vec koliko godina ...

Na Android ARM i telefonima je potpuno ista prica, jezgro linux kernela je malo drugacije ali vecina stvari je ista cak i ova grafika sve ovo sto se napise u C/C++ uz jednu dodatnu MainActivity.java skriptu se pretvara u gotovu aplikaciju za Android 5,6,7,8+. I tu ima sve ovo isto, GL funicja ta-i-ta, 2D, 3D, verteksi, mreze, teksture, animacija, sve je tu samo mora debelo da se zagreje stolica i istrazi to sve, ja sam tek poceo da kopam po OpenGL ... Inace mora da se poznaje materija od Blender-a za 3D animaciju do ioctl() kernel poziva na Frame Buffer, cisto da ne bude dosadno Big Grin

[Image: attachment.php?aid=27736]


.pdf   OpenVG-Huone-Taiwan_Feb-2012.pdf (Size: 5,58 MB / Downloads: 2)


Attached Files Thumbnail(s)

Reply
#5
Ja sam trazio nesto slicno pre par dana za onu moju DIY kosilicu i porucih OpenMV board, prednost u odnosu na RPi mu je mnogo manja potrosnja (naravno i performanse su slabije), ali vredi pogledati. Evo linka:
https://openmv.io

(Ako ti je bitno da to za sta ti treba bude ovako nesto, ako je samo sw ko sw onda puno opcija ima uvek Smile)
Reply
#6
Za sada software koji se vrti mi je bitan, radim na RPi koji igrom slucaja ima GPU sa 64MB grafickog RAM, hehe, ako se neko seca bile su cuvene S3 graficke kartice za PC u PCI strarom slotu, isto su imale 64MB RAM-a i vezivale se na VGA monitore, eto to sad sve isto imamo u RPi u samom procesoru na izvolte da koristimo to kako god zelimo, tu su threadovi koji mogu da se vrte kako-god i sve je ostalo stvar prakticne implementacije, GPIO i SPI, I2C nam je poznat odavno, sad posle toliko godina doslo vreme da se i te tehnike napokon spoje : )
Reply
#7
Evo jos zanimljivijih biblioteka

https://github.com/raysan5/raylib
https://www.raylib.com/
https://www.raylib.com/examples.html

Ove rade na "svemu", ukljucujuci i RPi : )
Reply
#8
Da spomenem i BGFX, vrlo popularna biblioteka autora B.Karadzic
https://github.com/bkaradzic/bgfx

Te biblioteke sam probao na Android-u i radile su fino. Malo je kompleksnija biblioteka u pitanju sa puno opcija ali je zato cross-platform kompatibilna i podrzava sve graficke rendering engine, Direkt3D, Metal, OpenGL i WebGL.

Zanimljivo je da se za Android prakticno sve pise u C++ i program se exportuje kao jedan DLL (posebno za x86 i posebno za ARM) koji se samo "zapakuje" (wrapuje) u jednu MainActivity.java skriptu i odatle se poziva main() iz C++ programa koji odatle nadalje preuzima kontrolu nad ekranom i touch-om.
Reply
#9
Da ne budem dosadan ali samo kratak komentar zasto sam "navalio" sa ovim bibliotekama, pre par godina sam pravio neke aplikacije za RPi sa Display i touch i tada sam koristio Node.js, to je radilo ali u startu nisam bio zadovoljan grafickom realizacijom koja je bila napravljena u HTML i JavaScript. To je pravilo vazdan problema, trosilo resurse i generalno sporo radilo.

Da sam tada imao i znao za primere kao ovaj nebi ja pipao JavaScript nikad : )
Ovo je svetlosnu godinu bolje resenje na istom RPi hardweru!
Taj primer sto vidite u vasem WEB broseru isto tako radi na RPi bez X11 i desktopa sa 60 frejmova u sekundi sa sve GLSL shejderima Smile
https://www.raylib.com/examples/web/shad...processing
Reply
#10
Nisi dosadan, hvala sto delis sa nama sve ove detalje Smile Meni treba nesto slicno samo nikako da nadjem vremena za taj projekat ...
“If you think you are too small to make a difference, try sleeping with a mosquito.” - Dalai Lama XIV
Reply
#11
Quote:The GL Transmission Format (glTF) is an API-neutral runtime asset delivery format. glTF bridges the gap between 3D content creation tools and modern 3D applications by providing an efficient, extensible, interoperable format for the transmission and loading of 3D content.


https://github.com/KhronosGroup/glTF/tre...ation/2.0/

Ovo je specifikacija za nov graficki 3D format glTF, tehnicki je organizovan kao JSON file sa strukturom koja imaaaaaa, da ne nabrajam sta sve, pogledajte.
Ukratko u tom fajlu moze da se zapakuje ne samo 3D objekat kao skup nekih vektora nego i cela scena sa kamerom, pozadinom, materijalima i teksturama, animacija takodje.
Format glTF je naslednik Collada .dae formata koja je ista Khronos ekipa pravila ali u XML (neefikasno). Takodje glTF je jedini koji moze da funkcionalno parira Autodesk FBX formatu (Autodesk Maya FBX export) koji je na zalost closed-source. To su jedini (iole prihvaceni) formati koji mogu da prenesu celu scenu sa animacijom kao informacija a kako ce da se "orenda" to je stvar dogovora programera i dizajnera : )

Na primer neki od ovih 3D modela mogu da se pokrenu u WEB, Desktop i Mobile verziji i sto je bitno sve je definisano u fajlu kako to treba da izgleda ili radi (animirano).
Ovaj je pobedio, kako je uradio coveka neverovatno ... Smile
https://www.cgtrader.com/3d-models/chara...ert-deniro

*bg, odes kupis za 350$ Rober De Nira, mozes snimas reklame, filmove, pravis igrice ... jeftinije nego da ga stvarno iznajmis na sekunde a nema vidljive razlike Smile

[Image: attachment.php?aid=27765]


Attached Files Thumbnail(s)

Reply
#12
Btw, ovo sa 3D animacijom mi je nesto poslovno vezano preko firme za tamo vrlo popularnu kinesku muzicku grupu SNH48 iz Shanghai Smile
Prezentovali su 3D avatar prosli mesec na sajmu tehnike ...  

Evo nekih pesmica grupe SNH48 Smile

Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)