[c++/OpenGL] Programmeren onder Linux

Pagina: 1
Acties:

  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
Hallo, ik wil graag OpenGL gaan programmeren onder Redhat 9.0 met KDevelop 2.1.5. Nu heb ik al heel het internet afgestruind om dit werkende te krijgen, maar krijg er maar gewoon geen goed beeld van hoe alles in te stellen en wat te gebruiken om makkelijk en goed te kunnen programmeren.

Ik lees over verschillende libraries Mesa3D, GLUT, QT 3D. Ik heb al via QGL een projectje proberen te draaien, maar krijg in elke regel een foutmelding omdat ie waarschijnlijk de header files niet kan vinden. De linker instellingen staan overigens wel goed.

Ik zou graag willen weten, welke library het makkelijkst is in gebruik en of ik evt een andere environment beter kan gebruiken ivm de gekozen library. En of iemand een goede link voor die instelling. Het gaat dus echt niet om voorbeeldcode, maar om hoe ik alles goed in kan instellen. Bvd.

  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46

ATS

Van de meeste packages moet je de _devel hebben om er mee te kunnen programmeren. Heb je die van jde OpenGL libs? Verder: de libs die je noemt zijn niet onafhankelijk. AFAIK: Mesa is je basis implementatie van OpenGL. Omdat puur OpenGL niet zo makkelijk te gebruiken is, gebruik je een lib als GLUT, die wat functies wat handiger toegankelijk maakt. De Qt OpenGL module is alleen bedoeld om OpenGL te kunnen tekenen op een Qt Widget en gebruik te maken van de EventLoop, maar helpt je verder niet met je OpenGL zelf.

Je hebt dus alle drie de libs nodig om handig OpenGL te kunnen gebruiken vanuit een Qt programma.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Move van P&W naar NOS op verzoek van moto-moi.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Krooswijk.com schreef op 21 September 2003 @ 14:08:
Ik lees over verschillende libraries Mesa3D, GLUT, QT 3D. Ik heb al via QGL een projectje proberen te draaien, maar krijg in elke regel een foutmelding omdat ie waarschijnlijk de header files niet kan vinden. De linker instellingen staan overigens wel goed.
GLUT is troep, Mesa3D heb je niet veel te maken (je linkt gewoon met libGL, of dat nu de libGL van Mesa3D is of een 'officiele' implementatie van bv NVIDIA) en ik neem aan dat je met 'QT 3D' en 'QGL' de QGLWidget van Qt bedoeld?
Ik zou graag willen weten, welke library het makkelijkst is in gebruik en of ik evt een andere environment beter kan gebruiken ivm de gekozen library. En of iemand een goede link voor die instelling. Het gaat dus echt niet om voorbeeldcode, maar om hoe ik alles goed in kan instellen. Bvd.
Wat wil je doen?
Als je 3D spul wilt gaan doen (in hw) kan je alleen kiezen uit OpenGL, OpenGL en OpenGL 8) (in verschillende smaken als Mesa3D, NVIDIA impl. etc, maar dat ligt aan wat voor videokaart/driver je gebruikt).

De gebruikte IDE maakt niets uit, als je met KDevelop errors krijgt over missende headers of wat dan ook zal je dat ook in een andere IDE krijgen..

Verder valt er niet veel te zeggen want ik kan niet zien wat voor foutmeldingen jij ziet, ik ben helaas niet helderziend 8)

Enne, dat je foutmeldingen krijgt vanuit je source files betekent iig al dat je niet bij de linker instellingen hoeft te zoeken... B)
[/smart-ass]

---------

Oh, vergeet ik helemaal een verhaaltje te vertellen over window systemen enzo..

Nouja, als je een vervanger zoekt voor QGLWidget: http://www.libsdl.org

[ Voor 7% gewijzigd door Verwijderd op 21-09-2003 16:30 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:02

Creepy

Tactical Espionage Splatterer

En om de post van dikkebanaan wat aan te vullen:
Om een window aan te maken waarin je OpenGL kunt gebruiken zal je nog wat extra's nodig hebben. Kijk bijv. eens naar SDL, GLUT (wat dikkebaan troep vindt en dat ook goed onderbouwt ;) ) of GLX.

Glut is redelijk eenvoudig, GLX kost wat meer moeite en SDL doet veel meer dan dat je wilt als je alleen met OpenGL aan de slag wilt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
Dus als ik het goed begrijp zijn libs als SDL, GLUT libs die naast de standaard OpenGL implementatie extra's hebben zoals creeren van windows, etc. en is bv Mesa3D alleen een OpenGL implementatie, maar is dat verder niet van belang aangezien ik toch alleen met de libGL link??

Verder bedoelde ik inderdaad de QGLWidget van QT. Dus deze kan ik nu gaan gebruiken voor alles wat ik wil->b.v. om te beginnen windows en OpenGL zelf? Dit is dan ook wat ik heb gedaan in mijn test. Een windowclass gemaakt die erft van de QGLWidget, en die laten draaien, in de linker settings aangegeven dat de OpenGL lib moeten worden meegelinkt.

Als iemand mij vetelt dat ik iig op het goeie pad zit, dan kan ik dan weer zelf verder met uitzoeken.

Verwijderd

Ik kan je verwarring begrijpen, het duurde bij mij ook eventjes voordat ik Qt doorhad. Ik ben het inmiddles een beetje verleerd, maar ik had nog een simple framework op mijn schijf liggen, waarmee een driehoek op het scherm gekwakt wordt : Enjoy.

http://www.facticius.net/files/triangle.tar

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:02

Creepy

Tactical Espionage Splatterer

OpenGL is puur het 3d gebeuren. Welke lib er gebruikt wordt maakt eigenlijk niet uit, dat zoekt je linker zelf wel weer uit ;)

Maar om OpenGL te kunnen gebruiken moet je wel een window aanmaken met een OpenGL compatible canvas zodat OpenGL hier z'n output op kwijt kan. Om zo'n window aan te maken kan je bijv. gebruik maken van GLUT of GLX of SDL of QGLWidget of .... (met de nadruk op of ;) ).

Het voordeel van GLX is dat je er geen extra libs voor nodig hebt (alleen X moet geinstalleerd zijn), GLUT heeft een kleine extra lib maar is platform onafhankelijk, SDL is een complete framework voor games en het framework van QT is nog groter ;).

Als je een "pure" Linux OpenGL app wilt maken zou ik het jammer vinden op QT erbij te gebruiken aangezien ik dan speciaal QT voor jou app. zou moeten installeren ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Wilke
  • Registratie: December 2000
  • Laatst online: 23:04
SDL is dacht ik wel het meest handig als je iets van demo's, spelletjes of andere multimedia-toepassingen wilt maken. Als het gaat om een 3D-toepassing a la 3D studio (nou ja...misschien niet zo complex, maar zo'n soort applicatie) dan is dat spul van QT misschien iets...

Voor een game of gewoon OpenGL probeersel heb je verder die hele Widget toolkit die bij QT zit waarschijnlijk nergens voor nodig...

  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
heb het nu aan de praat met GLX, ik krijg nu echter foutmeldingen bij de volgende functies die waarschijnlijk iets met (het ontbreken van) een lib te maken hebben. ben ik ergens iets vergeten:

undefined reference to 'XF86VidModeQueryVersion'

dit verder bij elke functie aanroep beginnende met XF86VidMode...
iemand bekend met dit probleem?

[ Voor 3% gewijzigd door Krooswijk.com op 22-09-2003 20:03 ]


Verwijderd

Krooswijk.com schreef op 22 September 2003 @ 20:03:
heb het nu aan de praat met GLX, ik krijg nu echter foutmeldingen bij de volgende functies die waarschijnlijk iets met (het ontbreken van) een lib te maken hebben. ben ik ergens iets vergeten:

undefined reference to 'XF86VidModeQueryVersion'

dit verder bij elke functie aanroep beginnende met XF86VidMode...
iemand bekend met dit probleem?
Yep, je vergeet te linken met libXxf86vm.a (zo uit m'n hoofd, weet niet zeker of dat de goede is..)

edit:

Ah, okay.. het is dus de goede: :)
nm /usr/X11R6/lib/libXxf86vm.a | grep XF86VidModeQueryVersion
00000110 T XF86VidModeQueryVersion

[ Voor 14% gewijzigd door Verwijderd op 22-09-2003 21:13 ]


  • writser
  • Registratie: Mei 2000
  • Laatst online: 27-04 21:40
Gebruik gewoon SDL om openGL te programmeren onder linux! Het is heel makkelijk te leren, je kan er erg veel mee doen, het is snel en je code is ook nog portable. Op www.libsdl.org staat genoeg documentatie en ook een paar tutorials. Het handige van SDL vind ik dat je geen gezeur hebt met PIXELFORMATDESCRIPTORS, XF86VidModeQueryVersions en weet ik wat allemaal. In een paar regels heb je een venster geopend, en dan kun je je richten op het echte werk, openGL coden! :)
de graphics engine van UnrealTournament is geport naar linux met SDL, om even aan te geven dat je er veel meer mee kan dan bijvoorbeeld pong implementeren.
Ik hoop dat ik je hiermee heb overgehaald om ook SDL te gebruiken, scheelt je een hoop kopzorgen..

Onvoorstelbaar!


  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
Verwijderd schreef op 22 September 2003 @ 21:12:
[...]
Yep, je vergeet te linken met libXxf86vm.a (zo uit m'n hoofd, weet niet zeker of dat de goede is..)

edit:
Ah, okay.. het is dus de goede: :)
nm /usr/X11R6/lib/libXxf86vm.a | grep XF86VidModeQueryVersion
00000110 T XF86VidModeQueryVersion
ok perfect, ik heb de makefile behorende bij het testproject nog eens bekeken en daar moet ik inderdaad ook linken naar -lXxf86vm. dat lijkt de oplossing. dit heb ik dus via mijn project settings gewijzigd. echter bij het builden van het project geeft ie aan dat ie de library niet kan vinden.

nu wil het feit echter dat in de volgende map /usr/X11R6/lib/ alleen een .a file staat van libXxf86vm en geen .so file, terwijl dat bij de andere libraries wel zo is. is dit vereist en zoja hoe maak ik er een .so file van. misschien dat dikkebanaan dit onder aan z'n post heeft gezet, maar dat kan ik nu niet testen...

verder nog even aan writser, ik heb sdl ook wat beter bekeken. ik wil eerst dit aan de praat krijgen om er een beetje in te komen, daarna ga ik waarschijnlijk inderdaad overstappen op sdl...

Verwijderd

Gebruik het volgende:

code:
1
ld -L/usr/X11R6/lib -lXxf86vm

  • Wilke
  • Registratie: December 2000
  • Laatst online: 23:04
Het zal inmiddels wel overgekomen zijn, maar SDL is toch idd de 'way to go' als je het jezelf niet onnodig zeer lastig wilt maken.

Enne, als je nog iets leuks maakt daarmee, post je dan even in dit topic een linkje ofzo? Ik heb me eigenlijk nog nooit in OpenGL spul verdiept, maar ben wel nieuwsgierig naar wat voorbeeldjes op zich...dus als je nog wat leuks maak....show us! :P

Verwijderd

Krooswijk.com schreef op 23 September 2003 @ 09:11:
nu wil het feit echter dat in de volgende map /usr/X11R6/lib/ alleen een .a file staat van libXxf86vm en geen .so file, terwijl dat bij de andere libraries wel zo is. is dit vereist en zoja hoe maak ik er een .so file van. misschien dat dikkebanaan dit onder aan z'n post heeft gezet, maar dat kan ik nu niet testen...
KLopt, er is idd geen SO van.

Zo'n '.a' bestand (a = archive) is trouwens een statische library waarvan de code in de executable zelf terecht komt.

En je moet idd even aangeven in welke directory de linker het bestand kan vinden.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:02

Creepy

Tactical Espionage Splatterer

Wilke schreef op 23 September 2003 @ 11:16:
Het zal inmiddels wel overgekomen zijn, maar SDL is toch idd de 'way to go' als je het jezelf niet onnodig zeer lastig wilt maken.
* Creepy fluister zachtjes dat ie GLUT makkelijker vindt dan SDL.. sssst :P
Enne, als je nog iets leuks maakt daarmee, post je dan even in dit topic een linkje ofzo? Ik heb me eigenlijk nog nooit in OpenGL spul verdiept, maar ben wel nieuwsgierig naar wat voorbeeldjes op zich...dus als je nog wat leuks maak....show us! :P
Geldt dat ook voor mij? ;) Ik heb ergens nog wel wat GLUT demo/test/rommel gevalletjes liggen..
Nu maar hopen dat oisyn dit niet ziet anders komt hij weer patsen met z'n 3d app's e.d.
* Creepy is stiekum jaloers ;)

[ Voor 12% gewijzigd door Creepy op 23-09-2003 15:46 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • writser
  • Registratie: Mei 2000
  • Laatst online: 27-04 21:40
Ik heb het gevoel dat SDL-gebruikers hier stelselmatig worden genegeerd :)

Onvoorstelbaar!


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:02

Creepy

Tactical Espionage Splatterer

writser schreef op 23 september 2003 @ 18:56:
Ik heb het gevoel dat SDL-gebruikers hier stelselmatig worden genegeerd :)
Eeeh.. hoezo?

Voor een "simpel" OpenGL iets is SDL gewoon overkill. Op het moment dat je wat meer wilt dan alleen OpenGL en er een bijv. een game van wil maken dan raad ik je in elk geval SDL van harte aan ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
op de een of andere manier draait mijn opengl app heel traag, het lijkt wel of de messageloop op de eoa manier hangt, aangezien mijn cursor opeens freezed en nog met moeite een keypress kan worden gedetecteerd.

is het zo dat glx erg traag is? ik draai op redhat 9 op de nieuwste TU/e laptop.
als testprogramma heb ik gewoon effe Nehe Lesson 1 gebruikt. mocht het echt aan de code liggen dan ga ik dat daarna zelf uitpluizen, maar ik wilde eerst weten of het misschien aan het systeem ofzo ligt.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:02

Creepy

Tactical Espionage Splatterer

GLX erg traag? Of je nu GLX, SDL, GLUT etc gebruikt maakt in snelheid van je 3d rendering nauwelijks uit. Ik gok dat OpenGL in software mode draait.

Welke videokaart driver gebruik je in X en heb je DRI support aan staan?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Exirion
  • Registratie: Februari 2000
  • Nu online

Exirion

Gadgetfetisjist

Krooswijk.com schreef op 26 September 2003 @ 13:31:
is het zo dat glx erg traag is? ik draai op redhat 9 op de nieuwste TU/e laptop.
Ik had niet het idee dat er hardware OpenGL support voor de Intel 855GM chipset is.

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


Verwijderd

Krooswijk.com schreef op 26 september 2003 @ 13:31:
op de een of andere manier draait mijn opengl app heel traag, het lijkt wel of de messageloop op de eoa manier hangt, aangezien mijn cursor opeens freezed en nog met moeite een keypress kan worden gedetecteerd.

is het zo dat glx erg traag is? ik draai op redhat 9 op de nieuwste TU/e laptop.
als testprogramma heb ik gewoon effe Nehe Lesson 1 gebruikt. mocht het echt aan de code liggen dan ga ik dat daarna zelf uitpluizen, maar ik wilde eerst weten of het misschien aan het systeem ofzo ligt.
Zet een usleep(1) in je message loop.
Pagina: 1