C++ knihovny pro OpenGL (3.0+)

C++ knihovny pro OpenGL (3.0+)
« kdy: 23. 05. 2012, 14:06:38 »
Ahoj

IDE: NetBeans
Operačný systém: Windows 7 64 bit/ Ubuntu 12.04 64 bit(potrebujem to rozbehať na Windows ale robiť to na Linuxe mi nebude robit problém)

Začínam programovať v OpenGL, ale mám dosť velký problém zistiť, zopár vecí:
- odkial zohnať kompletnú sadu halavičkových súborov k OpenGL (hlavne gl.h, glu.h asi aj gl3.h ). Stiahol som si tp z netu cez internetový vyhladávač a mám pocit, že niektoré funkcie tam nie sú deklarované
- ako zistiť, aké parametre mám dať do linkera, keď sa mi kompilátor sťažuje na nedefinované referencie, napr "undefined reference to `glGenBuffers@8'"
- tiež by pomohol zoznam knižníc, ktoré OpenGL potrebuje

Na vytvorenie okna a ovládanie programu by som chcel používať SDL. Je možné potom do tohto okna priamo kresliť?

Dopredu díky za akúkolvek pomoc, z OpenGL mám tak trochu fóbiu a až teraz som sa rozhodol na to vrhnúť  :)

« Poslední změna: 23. 05. 2012, 16:36:38 od Petr Krčmář »


anonym

Re:Knižnice potrebné pre C++ programovanie v OpenGL(3.0+)
« Odpověď #1 kdy: 23. 05. 2012, 14:54:43 »
s SDL osobne zkusenost nemam, pozuival sem GLUT. tam to fungovalo tak ze GLUT otevrel GL okno, a ja pak bez problemu volal GL funkce

co se tyce headeru, ty jsou casto u grafickych ovladacu (linux, nvidia), nebo je stahnes z khronos.org

linkeru by melo stacit "-lgl", nebo v tvem pripade jeste "-lsdl", zalezi jaky vsechny libky pouzivas

co se tyce nekterych funkci, obcas jsou jen jako extension, takze je potreba otestovat pritomnost a az potom pouzivat, nebo si zapnout nejaky define a mit prototypy z headeru.
na testovani extension muzes pouzit knihovnu GLEW

PS: GL sem delal davno predtim enz byl GL3, takze informace nemusi byt presny

Re:Knižnice potrebné pre C++ programovanie v OpenGL(3.0+)
« Odpověď #2 kdy: 23. 05. 2012, 17:52:27 »
Tak nakoniec som sa rozhodol, že OpenGL3.0 si nechám na potom, keď vyriešim renderovanie.

Netbeans mi príkaz -lgl nerozpoznal, použi som -lopengl32.
Ale ten GLEW mi nejak nejde nalinkovať, dostávam chybu "undefined reference to `__GLEW_VERSION_1_3" nenalinkoval som do projektu niečo čo tam treba ale netuším čo...

Re:C++ knihovny pro OpenGL (3.0+)
« Odpověď #3 kdy: 23. 05. 2012, 17:53:51 »
P.S. renderovanie mi už funguje so starou API. (OpenGL2)

nou

Re:C++ knihovny pro OpenGL (3.0+)
« Odpověď #4 kdy: 25. 05. 2012, 10:11:01 »
na stare OpenGL glBegin()/glEnd() a fixed pipeline sa ani nepozeraj. mal by si sa ucit to co je v OpenGL 3 a nie je oznacene ako deprectaed. teda naucit sa shadery, VBO....

na linuxe treba linkovat -lGL na windows -lopengl32. na linuxe dostanes spolu s MESA prakticky vsetky funkcie priamo v libGL.so takze ani netreba pouzivat GLEW. staci definovat GL_GLEXT_PROTOTYPES a clovek dostane v glext.h vsetky moderne funkcie.
Kód: [Vybrat]
#include <GL/gl.h>
#defineGL_GLEXT_PROTOTYPES
#include <GL/glext.h>

na windows je opengl32.lib ktora ale obsahuje len zastarale OpenGL 1.2 funkcie. preto je potrebne pouzit GLEW alebo iny loader opengl funkcii.

hlavickove subory sa daju stiahnut tu http://www.opengl.org/registry/#headers


Ohnic

Re:C++ knihovny pro OpenGL (3.0+)
« Odpověď #5 kdy: 25. 05. 2012, 13:33:35 »
A jese se i bude hodit knihovna glm (GL Math) -- nahrazuje to, co je v GL3 deprecated - vektorovou a maticovou aritmetiku na transformace (vypocty na strane CPU).

Re:C++ knihovny pro OpenGL (3.0+)
« Odpověď #6 kdy: 25. 05. 2012, 19:22:41 »
na stare OpenGL glBegin()/glEnd() a fixed pipeline sa ani nepozeraj. mal by si sa ucit to co je v OpenGL 3 a nie je oznacene ako deprectaed. teda naucit sa shadery, VBO....
Pôvodne som chcel začať písať z API verzie 3.0 ale najprv som potreboval rýchlo získať s tej aplikácie grafický výstup, aby som si bol istý, že som nikde nespravil chybu. S VBO som sa už "z rychlíku" oboznámil. Predsa nebudem každý vertex posielať do grafiky cez CPU, že... teda ak som správne pochopil o čo vlastne u VBO ide. :)
 
na linuxe treba linkovat -lGL na windows -lopengl32. na linuxe dostanes spolu s MESA prakticky vsetky funkcie priamo v libGL.so takze ani netreba pouzivat GLEW. staci definovat GL_GLEXT_PROTOTYPES a clovek dostane v glext.h vsetky moderne funkcie.
Kód: [Vybrat]
#include <GL/gl.h>
#defineGL_GLEXT_PROTOTYPES
#include <GL/glext.h>

na windows je opengl32.lib ktora ale obsahuje len zastarale OpenGL 1.2 funkcie. preto je potrebne pouzit GLEW alebo iny loader opengl funkcii.
Takže sa Microsoft snaží prácu z OpenGL čo najviac stažiť :D. Dík za vysvetlenie, zrovna prenášam projekt na Linux, malo by byť po problémoch. Díky za dobré rady.

Ohnic: dík, keby to nenapíšeš, tak sa tu za dva dni zase pýtam.