Програмиране под linux SDL OpenGL, Уроци и примери за програмиране

По молба на форума реших да напиша проста статия за графично програмиране под linux. Всъщност основната част от графичния (openGL) код в различните операционни системи остава практически непроменена. Различават се само начините за инициализиране на програма (по-точно прозорец). В Windows всъщност има само winAPI и различни обвивки за него. Linux има две основни библиотеки за прозорци: gtk и qt4. Ако се интересувате, можете да намерите начини в мрежата да инициализирате прозорец за тях. Ще опиша по-лесен начин: библиотеката SDL.

Къде мога да го взема? [a=http://www.libsdl.org/:a]http://www.libsdl.org/ - официален сайт на проекта, където можете да намерите всичко необходимо. Но аз използвам Gentoo Linux, така че всичко, което трябва да направя, е да напиша „emerge libsdl“ и библиотеката ще бъде инсталирана. Повечето други дистрибуции имат свои собствени мениджъри на пакети, които също улесняват инсталирането на всичко.

Да започнем да програмираме. Нека създадем един файл, main.cpp. Моля, обърнете внимание, че има много по-малко код за проста инициализация, отколкото в Windows =)

#include // Заглавка на SDL библиотека #include // OpenGL заглавки & glu #включи

// Първо, нека напишем проста функция, която ще рисува // цветен триъгълник void Draw ( ) < // Преместване на камерата назад glTranslatef ( 0 , 0 ,- 5 ) ; // Начертайте триъгълник glBegin ( GL_TRIANGLES ) ; glColor3f (0, 1, 1); glVertex3f (-1, 0, 0); glColor3f (1, 0, 1); glVertex3f (1,- 1, 0); glColor3f (1, 1, 0); glVertex3f (1, 0, 0); glEnd(); >

int main ( ) < // Инициализиране на SDL. Като параметър предаваме кои точно // подсистеми трябва да бъдат инициализирани. Например, можете да посочите SDL_INIT_AUDIO //или SDL_INIT_JOYSTICK за достъп съответно до звук и джойстик. // По-долу ще изброя възможните флагове.

// Ако възникне грешка, SDL_Init ще върне "-1" if ( SDL_Init ( SDL_INIT_VIDEO )