Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Les voor beginnelingen in Ubuntu (zoals ik) C of C++ glut/Opengl programmeren  (gelezen 1233 keer)

Offline Ran

  • Lid
Dit zijn mijn ervaringen met het programmeren in C of C++ onder Ubuntu 12.04
met GCC.
Ik heb niet echt een goed inzicht in de Ubuntu OS en nog minder in het terminal gegeven.
Maar ik gebruik Ubuntu zoals ik ooit Windows gebruikte. Grafisch dus.
 
Echter was het toch eenvoudig om een C/C++ programma op te starten.
Ik gebruik hier glut Opengl en (later) SDL en de terminal.
Glut is een manier maar zoals bij het programmeren in "zuiver"
windows verlies je bij glut je "main" functie.
Wat wil zeggen dat je variabelen onder main niet bruikbaar zijn.
Maar om te starten hier glut+Opengl dus:

Wat eerst te doen:
Wel via Ubuntu softwarecemtrum GCC installeren.

En ik volg hier dus ook:
http://www.codeproject.com/Articles/182109/Setting-up-an-OpenGL-development-environment-in-Ub
maar met de juiste directe links.

Je gaat dus naar: http://packages.debian.org/search?searchon=contents&keywords=gl.h&mode=exactfilename&suite=stable&arch=any
en kies daar het:     mesa-common-dev    pakket

Ik sla dit pakket dan op onder mijn "Downloads".
Dat is het pakket voor glut en opengl

Ik doe hetzelfde voor het glu pakket: http://packages.debian.org/search?searchon=contents&keywords=glu.h&mode=exactfilename&suite=stable&arch=any

En daar kies ik voor:     libglu1-mesa-dev
Ik sla dit pakket dan op onder mijn "Downloads".

Dan ga ik voor het SDL pakket:
http://packages.debian.org/search?searchon=contents&keywords=SDL.h&mode=exactfilename&suite=stable&arch=any

En kies ik:     libsdl1.2-dev
En sla ik op onder "downloads"

Ik ga dan naar de terminal:
Mijn eigen terminal toont: "ran@ran-Aspire-7735:~$ " (die "" zijn er natuurlijk niet en moeten/mogen er niet zijn)
(Bij iedereen anders natuurlijk)
En ik typ daar sudo apt-get install mesa-common-dev na "ran@ran-Aspire-7735:~$ " natuurlijk (en enter of return)
Nu wordt Glut en opengl geinstalleerd onder Computer -> bestandssysteem -> usr (indien usr niet zichtbaar = control H drukken)

Nu even glu installeren:
Ook weer na "ran@ran-Aspire-7735:~$ " typ ik: sudo apt-get install libglu1-mesa-dev (en enter)

Nu ook nog even SDL installeren:
Idem maar nu typ ik na "ran@ran-Aspire-7735:~$ "  libsdl1.2-dev (en enter)

Misschien nog even kijken onder Computer -> bestandssysteem -> usr (indien usr niet zichtbaar = control H drukken)
of ze er zijn, onder usr vind je de map "include" en daaronder moeten de mappen "GL" en "SDL" zichtbaar zijn.
Glut en Opengl (GL) zitten samen onder de map "GL".

Zo nu zijn we klaar om te programmeren onder GCC.

Eerste programma:

#include "GL/freeglut.h"
#include "GL/gl.h"

/* display function - code from:
     http://fly.cc.fer.hr/~unreal/theredbook/chapter01.html
This is the actual usage of the OpenGL library.
The following code is the same for any platform */
void renderFunction()
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 1.0, 1.0);
    glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
    glBegin(GL_POLYGON);
        glVertex2f(-0.5, -0.5);
        glVertex2f(-0.5, 0.5);
        glVertex2f(0.5, 0.5);
        glVertex2f(0.5, -0.5);
    glEnd();
    glFlush();
}

/* Main method - main entry point of application
the freeglut library does the window creation work for us,
regardless of the platform. */
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(100,100);
    glutCreateWindow("OpenGL - First window demo");
    glutDisplayFunc(renderFunction);
    glutMainLoop();   
    return 0;
}


Kopieer dit via paste en jouw Teksteditor en noem het main.c
Plaats het onder "Persoonlijke map" "projecten" en maak onder
projecten bv een eigen map "test2" of zoiets.

Laat ons het programma uitvoeren en compileren, maar eerst:
Nu typ ik cd na "ran@ran-Aspire-7735:~$ " dus heb je:  ran@ran-Aspire-7735:~$ cd
om naar mijn Persoonlijke map te gaan.

Nu ga ik naar mijn projecten map: ran@ran-Aspire-7735:~$ cd projecten

En nu naar mijn test2 map: ran@ran-Aspire-7735:~/projecten$ cd test2

Dus ben ik nu in: ran@ran-Aspire-7735:~/projecten/test2$

Laat ons nu de programma compileren/uitvoeren:

in de terminal heb je:

ran@ran-Aspire-7735:~/projecten$ cd test2

typ nu daar achter: g++ -o main main.c -lglut

(-lglut is het linken van de libs -> voor SDL en Opengl is -lGL en -lSDL nodig -> let op hoofdletters en voor -lglut
geen hoofdletters)

Je krijgt nu een uitvoerbaar bestand die "main" noemt en
die een wit vierkant weergeeft als je erop klikt.

Dit was een zeer bevattelijke les over Opengl/glut.
Ik ben op Ubuntu ook nog vreemd dus fouten heb ik wel gemaakt
tegen het OS systeem.
Maar mijn uitleg en werking van het programma zijn wel correct.
Als iemand ook nog het vervolg: SDL onder Ubuntu wil, geef dan hieronder een
seintje en dan zal ik dat ook voor SDL doen.

Beste Groeten,
Ran



[/code]
« Laatst bewerkt op: 2012/10/02, 10:57:36 door Ran »

Offline Ran

  • Lid
Zie ook: Programmeren op Ubuntu

Ran

Ik denk dat ge bij het installeren van de dependencies wat basis mist. Het is helemaal niet nodig om eerst de bestanden te downloaden om daarna via apt-get te installeren. apt-get zal de pakketten uit de pakketbronnen van Ubuntu halen, niet uit uw downloadmap.

Kleine tip, om uw tekst wat duidelijker en overzichtelijker te maken, gebruik wat vaker de code-tags en zet wat dingetjes in het vet. In plaats van telkens na "ran@ran-Aspire-7735:~$" te zeggen, is eenmaal ook wel voldoende, zeg gewoon in de terminal of iets dergelijk. Dat zal heel wat chaos wegnemen.

Commando's zoals
cd
cd projecten
cd test2
Kunnen natuurlijk ingekort worden door:
cd $HOME/projecten/test2

Offline Ran

  • Lid
Dag Nunslaughter,

Ja, ik mis basis  i.v.m. de terminalwerking.
Ik gebruik de terminal immers nooit.
En ja, ik dacht ook wel dat men de bestanden niet moest downloaden eerst.
Maar door het feit dat ik met de terminal niet overweg kan maar toch een
programmeur ben heb ik getracht een soort "spoor" te maken hoe ik het heb
gedaan met goed resultaat en dat hier gepost.
Ik dacht dat deze tekst nuttig kon zijn voor mensen die in Ubuntu wilden programmeren in C/C++.
Ik zou zeggen, als jij mijn tekst verandert in een voor jou meer leesbare vorm, geen probleem
ik zou dat op prijs stellen.
Verander mijn tekst zoals jij denkt dat het moest zijn en zet het hieronder deze tekst, op die manier
weet ik hoe het moet want ook op dit forum ben ik ook niet goed thuis.
En dan kunnen de mensen die hier kijken kiezen tussen mijn tekst of jouw tekst.
Ik heb dit hier gewoon maar gepost om anderen te helpen, meer niet.
Jouw hulp is welkom.....

Beste Groeten,
Ran

   
« Laatst bewerkt op: 2012/10/26, 09:57:31 door Ran »