10. marts 2003 - 21:37Der er
32 kommentarer og 1 løsning
OpenGL programmering under Linux
Jeg har fået den ide at jeg vil kaste mig over noget OpenGL programmering med C++ under Linux, med henblik på, måske en dag, at kunne udvikle spil. Så jeg søgte på google, og det eneste jeg rigtigt fandt var denne side : http://nehe.gamedev.net/ som egentlig ser forfærdelig god ud. Desværre kan jeg ikke få eksemplerne til at virke med GCC.
Jeg ville derfor høre om nogen her kan henvise til en god side omhandlende OpenGL specielt under Linux med GCC, for begyndere og ikke eksperter :) Eller hvad som helst der kan hjælpe mig til at komme igang. Det jeg gerne vil finde er en introduktion til det mest grundlæggende vedrørende OpenGL, alt det andet, mere avancerede, ser der jo ud til at være massere sider om.
Det er et crossplatform API der tager sig af triviel kode (input, initialisering af grafik og sådan noget).
Der findes et hav af eksempler, ikke mindst i glut pakken, der bruger glut.
Glut videreudvikles ikke mere men det er et rigtigt godt sted at starte når man skal lære OpenGL - man bliver tvungen til at koncentrere sig om OpenGL istedet for triviel Vinduesopsætning.
Du kan sikkert, afhængig af din distribution, finde nogle developer pakker med glut.
Jeg tror jeg allerede har glut installeret... Kan i hvert fald finde bl.a. glut.h og fglut.h i /usr/include/GL
Har ikke kigget nehe's tutorials grundigt igennem, synes bare det var glimrende at finde noget hvor det bliver beskrevet så grundigt, det er sommetider rart at få tingene skåret ud i pap på den måde :)
Jeg er vist lidt lost her. Alle de koder jeg har prøvet giver en masse fejl, din giver dog færrest. Din kode nøjes med disse par fejl
t.c:9: tolkningsfejl before "fullscreen" t.c:9: 'false' ikke erklæret her (ikke i en funktion) t.c:9: warning: data definition has no type or storage class t.c:10: tolkningsfejl before "renderWireframe" t.c:10: 'false' ikke erklæret her (ikke i en funktion) t.c:10: warning: data definition has no type or storage class
Har ikke lige styr på makefiles, men det er vel heller ikke nødvendigt at bruge en makefile eller hvad?
main.cpp: In function `void keyboardFunc(unsigned char, int, int)': main.cpp:75: `exit' undeclared (first use this function) main.cpp:75: (et kaldenavn der ikke er erklæret, rapporteres kun én gang per funktion)
OK, så kommer der intet output (Går som det skal, regner jeg med :)
Men det er som om jeg har overset et eller andet, for jeg får ikke noget ud af det, udover en ubrugelig main.o fil (.o filer plejer da ellers at være executables, eller drømmer jeg?)
Og linker med: g++ -o main -lopengl32 -lglu32 -lglut32
Du kan også samle det i én sætning: g++ main.cpp -o main -lopengl32 -lglu32 -lglut32
Grunden til jeg adskildte kompileringen og linkningen er at jeg ikke er helt sikker på at det er den korrekte måde at linke på (jeg har ikke lige en Linux boks jeg kan teste på..).
OK, det er det jeg siger, jeg er gået glip af et eller andet elementært, må lige have styr på det før jeg fortsætter for meget med openGL, men nu har jeg da noget at gå tilbage til :)
Hvis jeg bruger din 2 delte metode får jeg følgende fejl
/usr/bin/ld: cannot find -lopengl32 collect2: ld returned 1 exit status
Betyder vel at openGL mangler, hvilket jeg ikke helt kan forstå. :(
Ja OK, får da prøvet nogen ting af her :) Følgende fejl får jeg med din sidste kommando
/usr/lib/gcc-lib/i386-redhat-linux/3.2/../../../crt1.o: In function `_start': /usr/lib/gcc-lib/i386-redhat-linux/3.2/../../../crt1.o(.text+0x18): undefined re ference to `main' collect2: ld returned 1 exit status
Her er lige med kommandoer og det hele, hvis det skulle være til nogen hjælp
[casper@0x503ed1d6 casper]$ g++ -c test.cpp [casper@0x503ed1d6 casper]$ g++ -o test -lGL -lGLU -lglut /usr/lib/gcc-lib/i386-redhat-linux/3.2/../../../crt1.o: In function `_start': /usr/lib/gcc-lib/i386-redhat-linux/3.2/../../../crt1.o(.text+0x18): undefined reference to `main' collect2: ld returned 1 exit status
Jeg her ikke "personligt" installeret OpenGL, det er installeret automatisk sammen med RH, hvis det da er installeret (hvilket dog ville undre mig hvis det ikke var, ellers ville jeg vel ikke have header filerne, og den ville vel slet ikke compile overhovedet)
OK, vil jeg kigge på. Men uanset hvad har du da i hvert fald gjort dig fortjent til points... Tak for hjælpen, jeg tror efterhånden jeg har en hel del der skal kigges på :)
Jeg valgte at bruge størstedelen af de 6 timer på andre ting :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.