programowanie z OpenGL - jak?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Razi
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 150
Rejestracja: 20 paź 2007, 16:23
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Kontakt:

programowanie z OpenGL - jak?

Post 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ą
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: programowanie z OpenGL - jak?

Post 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.
Razi
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 150
Rejestracja: 20 paź 2007, 16:23
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Kontakt:

Odp: programowanie z OpenGL - jak?

Post 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:/
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: programowanie z OpenGL - jak?

Post 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
Razi
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 150
Rejestracja: 20 paź 2007, 16:23
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Kontakt:

Odp: programowanie z OpenGL - jak?

Post 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:/
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: programowanie z OpenGL - jak?

Post 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ć.
Razi
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 150
Rejestracja: 20 paź 2007, 16:23
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Kontakt:

Odp: programowanie z OpenGL - jak?

Post 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ł
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: programowanie z OpenGL - jak?

Post 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
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości