Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 25. červen 2012, 19:20:45 Předmět: OpenGL - includy |
|
|
Cau, po delsi dobe jsem se vratil k vyvoji pod OpenGL a popravde jsem porad zmateny ze vsech knihoven pro extensiony. Vyvijim pod linuxem a pouzivam GLEW + glut... absolutne mi ale neleze do hlavy jedna vec.
Kdyz mam napr. *.h file pro tridu "Renderer" a chci uvnitr pouzit napr fci glGenBuffers tak mi eclipse haze chybu ze tu fci nezna pritom vse jde zkompilovat a spustit.
Existuje nejaky dobry zdroj kde by byly vsechny tyhle "extensny" vysvetlene? |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 25. červen 2012, 20:10:36 Předmět: |
|
|
zisiel by sa presny text chyby. a bude to asi len warning pretoze pri error by to skoncilo. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 25. červen 2012, 20:14:13 Předmět: |
|
|
no ono to právě žádnou chybu nehází píše to jen "Unresolved" a podržená červeně je funce... Každopádně je potřeba includovat znovu glew i v konkrétním třídě ? Když používám Opengl funce? |
|
Návrat nahoru |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 25. červen 2012, 21:57:49 Předmět: |
|
|
Pokud ti překlad funguje a program spustíš, ale IDE ti hází chybu, tak bude problém někde v tom IDE (tedy Eclipse). Můžeš to buď ignorovat, zkusit stáhnout novou verzi, googlit, jestli někdo nemá podobný problém nebo hledat, jestli není potřeba někde něco nastavit. _________________ Mám strach |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 25. červen 2012, 23:26:08 Předmět: |
|
|
No, jak vidím slovo Eclipse, musím reagovat. Taková věc se mi ještě nestala a to používám Eclipse skoro 5 let...A pracuji v něm jak na Windows tak v Linuxu.
Rád bych viděl, co to přesně dělá. Můžeš postnout nějaký screen? _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
Vilem Otte
Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 26. červen 2012, 01:57:52 Předmět: |
|
|
Chybové hlášení "Unresolved" řekne asi tolik, jako když napíši "Error: "glGenBuffers"" - tedy nic... (verze a název kompilátoru k tomu jsou nutné informace, stejně jako celý výpis z terminálu/output console).
Možná chyba:
glGenBuffers není součástí OpenGL headeru (gl.h), ale je součástí Extensions library (prototypy v glext.h). I přesto že byla adopted to core (in OpenGL 2.0 pokud mě paměť neklame), musíš si sám definovat prototyp procedury (PFNxxxPROC kde xxx je v caps napsaný název procedury) a poté při zjištění dostatečně vysoké verze/přítomnosti extensionu získat její adresu skrz wglGetProcAddress/glXGetProcAddress/aglGetProcAddress - záleží na systému (Windows/Linux/Apple).
Pro usnadnění můžeš použít nějakou existující knihovnu na zvládání práce s extensiony - např. GLEW.
Pozn. dřív tato procedura byla součástí GL_ARB_vertex_buffer_object extensionu.
EDIT: Jelikož používáš GLUT+GLEW - Informace ke GLEW
kód: |
http://glew.sourceforge.net/basic.html |
- ručně je získávat nebudeš potřebovat (pokud to vyloženě nebudeš chtít bez GLEW).
A nezapomeň přilinkoval knihovnu GLEW (v linker params "-lGLEW" v makefile, jak na to v Eclipse nevím - nepoužívám jej) _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
|
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 26. červen 2012, 07:55:29 Předmět: |
|
|
Vilem Otte napsal: |
Chybové hlášení "Unresolved" řekne asi tolik, jako když napíši "Error: "glGenBuffers"" - tedy nic... (verze a název kompilátoru k tomu jsou nutné informace, stejně jako celý výpis z terminálu/output console).
Možná chyba:
glGenBuffers není součástí OpenGL headeru (gl.h), ale je součástí Extensions library (prototypy v glext.h). I přesto že byla adopted to core (in OpenGL 2.0 pokud mě paměť neklame), musíš si sám definovat prototyp procedury (PFNxxxPROC kde xxx je v caps napsaný název procedury) a poté při zjištění dostatečně vysoké verze/přítomnosti extensionu získat její adresu skrz wglGetProcAddress/glXGetProcAddress/aglGetProcAddress - záleží na systému (Windows/Linux/Apple).
Pro usnadnění můžeš použít nějakou existující knihovnu na zvládání práce s extensiony - např. GLEW.
Pozn. dřív tato procedura byla součástí GL_ARB_vertex_buffer_object extensionu.
EDIT: Jelikož používáš GLUT+GLEW - Informace ke GLEW
kód: |
http://glew.sourceforge.net/basic.html |
- ručně je získávat nebudeš potřebovat (pokud to vyloženě nebudeš chtít bez GLEW).
A nezapomeň přilinkoval knihovnu GLEW (v linker params "-lGLEW" v makefile, jak na to v Eclipse nevím - nepoužívám jej) |
Používám GLEW... eclipse se chová jako když ta funkce prostě neexistuje tzn Unresolved external symbol. v konkrétním CPP file includuju glew.h ale pořád eclipse tu signaturu funkce nikde nevidí.
Otázka tedy zní. Ve kterém headeru se nachází např. tato funkce glGenBuffers... jestli to správně chápu měl by stačit include glew.h |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 26. červen 2012, 11:33:38 Předmět: |
|
|
Vilem Otte napsal: |
A nezapomeň přilinkoval knihovnu GLEW (v linker params "-lGLEW" v makefile, jak na to v Eclipse nevím - nepoužívám jej) |
Project >> Properties >> C/C++ Build >> Settings >> C++ Linker >> Libraries
Tam pak napíšeš jenom GLEW, Eclipse si tam sám doplní to malé L.
tomkis napsal: |
Používám GLEW... eclipse se chová jako když ta funkce prostě neexistuje tzn Unresolved external symbol. v konkrétním CPP file includuju glew.h ale pořád eclipse tu signaturu funkce nikde nevidí. |
Možná že to bude tím, že v GLEW funkce glGenBuffers není, je tam pouze glGenBuffersARB. Ale glew nepoužívám, napsal jsem si raději vlastní knihovnu rozšíření, takže jak to tam je přesně nevím... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 26. červen 2012, 12:18:49 Předmět: |
|
|
VODA napsal: |
...
Možná že to bude tím, že v GLEW funkce glGenBuffers není, je tam pouze glGenBuffersARB... |
To nie je pravda (glew.h:1672, ver. 1.7.0). Nabuduce radsej s citaciou... _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 26. červen 2012, 12:23:17 Předmět: |
|
|
VODA napsal: |
Vilem Otte napsal: |
A nezapomeň přilinkoval knihovnu GLEW (v linker params "-lGLEW" v makefile, jak na to v Eclipse nevím - nepoužívám jej) |
Project >> Properties >> C/C++ Build >> Settings >> C++ Linker >> Libraries
Tam pak napíšeš jenom GLEW, Eclipse si tam sám doplní to malé L.
tomkis napsal: |
Používám GLEW... eclipse se chová jako když ta funkce prostě neexistuje tzn Unresolved external symbol. v konkrétním CPP file includuju glew.h ale pořád eclipse tu signaturu funkce nikde nevidí. |
Možná že to bude tím, že v GLEW funkce glGenBuffers není, je tam pouze glGenBuffersARB. Ale glew nepoužívám, napsal jsem si raději vlastní knihovnu rozšíření, takže jak to tam je přesně nevím... |
S nalinkovanim problém není (to by ani nešlo buildnout) problém je že některé funkce prostě nevidím... ale přivedl jsi mě na zajimavou myšlenku... asi nejspíše tam ta signatura vážně nebude (ale to by přece nešlo buildnout?) |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 26. červen 2012, 12:39:52 Předmět: |
|
|
pcmaster napsal: |
VODA napsal: |
...
Možná že to bude tím, že v GLEW funkce glGenBuffers není, je tam pouze glGenBuffersARB... |
To nie je pravda (glew.h:1672, ver. 1.7.0). Nabuduce radsej s citaciou... |
No já nevím teda, ale v headeru glew.h co mám já, tak není...na řádce 1672 mám tohle: #define GL_DRAW_BUFFER4 0x8829
Možná mám starší verzi, rozhodně to může být tomkisovo případ... _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
Vilem Otte
Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 26. červen 2012, 13:11:15 Předmět: |
|
|
Ještě možná další věc - odkud máš GLEW? A na kterém systému (distru) jsi? ... Některé distra totiž mají v packages opravdu hodně staré knihovny. Zkus nejlépe buildnout ze zdrojáků. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
|
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 26. červen 2012, 13:34:37 Předmět: |
|
|
Vilem Otte napsal: |
Ještě možná další věc - odkud máš GLEW? A na kterém systému (distru) jsi? ... Některé distra totiž mají v packages opravdu hodně staré knihovny. Zkus nejlépe buildnout ze zdrojáků. |
xubuntu 12.01 |
|
Návrat nahoru |
|
|
tomkis
Založen: 06. 06. 2011 Příspěvky: 33
|
Zaslal: 26. červen 2012, 13:35:10 Předmět: |
|
|
VODA napsal: |
pcmaster napsal: |
VODA napsal: |
...
Možná že to bude tím, že v GLEW funkce glGenBuffers není, je tam pouze glGenBuffersARB... |
To nie je pravda (glew.h:1672, ver. 1.7.0). Nabuduce radsej s citaciou... |
No já nevím teda, ale v headeru glew.h co mám já, tak není...na řádce 1672 mám tohle: #define GL_DRAW_BUFFER4 0x8829
Možná mám starší verzi, rozhodně to může být tomkisovo případ... |
Zaráží mě ovšem jedna věc, jak je možné že aplikace jde vybuildovat a spustit i bez hlavičky funkce ? |
|
Návrat nahoru |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 26. červen 2012, 14:26:55 Předmět: |
|
|
tomkis> hlavicky nejsou potreba, C podle standardu nedeklarovane funkce bere jako funkci int funkce(int, ..., int). Coz pak obcas vytvari dost neprijemne bugy v pripade, ze takove funkci predavas float nebo neco, co se da na int konvertovat. _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
|