Strona 1 z 1

programowanie z OpenGL - jak?

: 01 sty 2009, 21:33
autor: Razi
Chciałbym zacząć programowanie z OpenGL. Znalazłem już kilka kursów, ale opierają się głównie na samym renderowaniu grafiki. Chciałbym napisać pomału jakąś gierkę, ale jak sterować? Uczyłem się Allegro, ale to raczej nie jest najlepszy wybór.

I teraz pytanie: Co trzeba użyć żeby grafika renderowana była przez OGLa, a obsługiwał jeszcze wątki podobnie jak w Allegro.

na stronie http://lazyfoo.net/SDL_tutorials/lesson36/index.php pisze że wystarczy dodać #include "SDL/SDL_opengl.h", ale cały kod się nie kompiluje:

Kod: Zaznacz cały

razi@piecyk:~/prog/sdl/foo/lesson28$ g++ lesson28.cpp -o p `sdl-config --cflags --libs`
/tmp/ccQRVC1w.o: In function `load_image(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
lesson28.cpp:(.text+0x9ed): undefined reference to `IMG_Load'
collect2: ld returned 1 exit status
Nie wiem skąd wogóle bierze ten plik w /tmp....

Drugi sposób jaki znalazłem to połączenie SDLa z GLUTem:

Kod: Zaznacz cały

#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
Czy takie połączenie jest dobre? Wg. tutka na tej pierwszej stronie wystarczy SDL i SDL_opengl. Ten tu kompiluje się poprzez dodanie -lSDL -lglut

Co jest lepszym rozwiązaniem? kombinować i szukać błędu z pierwszego, czy używać SDL i GLUTa?

Jeszcze takie pytanko. Czasami spotykam się z takim kodem:

Kod: Zaznacz cały

 	SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 ); //rozmiar w bitach, koloru czerwonego
 	SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 ); //rozmiar w bitach, koloru zielonego
 	SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 ); //rozmiar w bitach, koloru niebieskiego
 	SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 8 ); //rozmiar w bitach, kana³u przeŸroczystoœci
 	SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); //rozmiar w bitach, z-buffor (bufor g³êbi)
 	SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); //w³¹czamy podwójne buforowanie
Jest on konieczny? Bez niego też się kompiluje

I przy okazji: Pod jakimi hasłami szukać bibliotek/funkcji do obsługi sieci? W razie jakbym chciał zrobić jakąś grę sieciową/internetową

Odp: programowanie z OpenGL - jak?

: 01 sty 2009, 23:19
autor: el.pescado
I teraz pytanie: Co trzeba użyć żeby grafika renderowana była przez OGLa, a obsługiwał jeszcze wątki podobnie jak w Allegro.
SDL zawiera obsługę wątków - nie wiem czy wygląda to podobnie do Allegro.

Kod: Zaznacz cały

lesson28.cpp:(.text+0x9ed): undefined reference to `IMG_Load'
Linker nie znajduje funkcji IMG_Load. Ta funkcja znajduje się w bibliotece SDL_Image, trzeba więc podać dodatkowo flagę -lSDL_image

Co jest lepszym rozwiązaniem? kombinować i szukać błędu z pierwszego, czy używać SDL i GLUTa?
Ja używam samego SDL. Uważam, że najlepiej jest używać SDL albo GLUT - używanie równocześnie obu jest trochę bez sensu.
I przy okazji: Pod jakimi hasłami szukać bibliotek/funkcji do obsługi sieci? W razie jakbym chciał zrobić jakąś grę sieciową/internetową
SDL_Net. Ewentualnie typowe dla systemów UNIX Berkley sockets.

Odp: programowanie z OpenGL - jak?

: 02 sty 2009, 00:57
autor: Razi
tylko że gdy nie zlinkuję gluta, nie wykrywa żadnych funkcji gl... Więc wydaje mi się że includowanie gluta jest potrzebne:/ -lopengl, -lopengl32, ani nic podobnego nie działa:/

Odp: programowanie z OpenGL - jak?

: 02 sty 2009, 11:53
autor: mikolajs
Zastanów się nad użyciem http://www.clanlib.org
clanLib korzysta z SDL i OpenGL i nie musisz od nowa wymyślać koła ;)
A przy kompilowaniu korzystaj z pkg-config: http://linuksowo.pl/index.php?t=msg&goto=437#msg_437

Odp: programowanie z OpenGL - jak?

: 02 sty 2009, 17:22
autor: Razi
chyba już rozumiem. Używając nagłówków gl, oraz glu, nie używa się samego gluta, tylko opengl. Tylko problem w tym, że jak zlinkować samego opengl'a. Chyba jednak trzeba linkować gluta:/

Odp: programowanie z OpenGL - jak?

: 02 sty 2009, 18:52
autor: el.pescado
-lopengl, -lopengl32, ani nic podobnego nie działa:/
-lGL i ewentualnie -lGLU

PS. Jeżeli nie korzystasz z GLUTa to nie trzeba go linkować.

Odp: programowanie z OpenGL - jak?

: 02 sty 2009, 21:04
autor: Razi
thx teraz zostaje tylko:
1. wybrać: zostać przy SDL, czy przejść na GLUTa, albo ClanLiba
2. poszukać sposobu do obsługi naciśnięciu wielu klawiszy na raz (tak jak w Allegro: key[nazwa_klawisza]- jeśli true-wciśnięty, false-niewciśnięty)
3. obczaić warstwy, żebym mógł jakiegoś HUDa zrobić
4. poszukać jakiegoś rozwiązania, żeby CPU nie przeciążał

Odp: programowanie z OpenGL - jak?

: 02 sty 2009, 21:53
autor: el.pescado
2. poszukać sposobu do obsługi naciśnięciu wielu klawiszy na raz (tak jak w Allegro: key[nazwa_klawisza]- jeśli true-wciśnięty, false-niewciśnięty)
W SDL jest funkcja SDL_GetKeyState