
OpenGL в Linux
Цикл уроков по программированию OpenGL в Linux.Примечаниев первом уроке не будем расматривать CodeBlocks и SDL, но подготовим все до следующих уроковЧасть 0.1 - немного об Linux.
[spoiler]Linux, произносится «ли́нукс» (также GNU/Linux, произносится «гну ли́нукс» или «гну слэш ли́нукс»]) — общее название Unix-подобных операционных систем на основе одноимённого ядра и собранных для него библиотек и системных программ, разработанных в рамках проекта GNU.Linux работает на PC-совместимых системах семейства Intel x86, а также на x86-64, PowerPC, ARM, Alpha AXP, Sun SPARC, Motorola 68000, Hitachi SuperH, IBM S/390, MIPS, HP PA-RISC, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa и многих других.В отличие от большинства других операционных систем, Linux не имеет единой « официальной » комплектации. Вместо этого Linux поставляется в большом количестве так называемых дистрибутивов, в которых ядро Linux соединяется с утилитами GNU и другими прикладными программами (например, X.org), делающими её полноценной многофункциональной операционной средой.Наиболее известными дистрибутивами Linux являются Arch Linux, CentOS, Debian, Fedora, Gentoo, Mandriva, Mint, openSUSE, Red Hat, Slackware, Ubuntu.Российские дистрибутивы — ALT Linux, ASPLinux, Calculate Linux, НауЛинукс, AgiliaLinux (ранее MOPSLinux) и Linux XPЧасть 1 - подготавливаемся.будем работать без компиляторатак что скачивать его не надотак будет прощепоставим компилятор g++. Заходим в Synaptic и пишем в поиске g++. Ставим галку напротив g++-4.4 и напротив libstdc++6-4.4-dev жмем применить и ждем пока все поставится.Часть 2 - создаем первый проект на С++.1. Запускаем терминал (я у себя поставил его запуск на тильду)2. В нем сразу мы находимся в домашнем каталоге. это можно проверить написав pwd и перед вами напишется строчка в каком каталоге вы находитесь. я предлагаю создать еще один каталог Projects в терминале все делается просто написав mkdir <название каталога> у меня это команда mkdir Projects/теперь в него надо перейти. для этого есть команда cd <название каталога> у меня это cd Projects/примечание: терминал чуствителен к регистру так что если у вас папка Projects/ а вы напишете projects/ то не перейдети еще для быстрого набора используйте TAB напишите Pro и нажмите TAB и у вас автоматически допишется Projects/3. ну вот каталог для проектов сделали теперь давайте напишем сам исходный код. напишем следующее gedit main.cpp это означает что мы включаем текстовый редактор gedit и создаем в папке в которой находимся файл main.cppпримечание: gedit раскрашивает текст в cpp файлах так что будет удобно писать =)теперь перед вами откроется окно редактора.4. начнем писать коддаже если вы совсем не знаете OpenGL то после этой статьи вы сможете свободно рисовать 2D графику и будете свободно ориентироваться в коде. каждую строчку кода я буду комментироватьпишем следующий код:
5. ну теперь закрываем редактор, теперь надо все это дело откомпилировать. в терминале пишем g++ main.cpp -lglut -o opengl тут вроде все понятно компилируем файл main.cpp и ставим с библиотеками glut, а -o означает файл будет на выходе, теперь все это дело надо запустим в терминале пишем gdb opengl перед вами тут всякое напишется теперь пишем run теперь ваше приложение запустится чт бы выйти из отладки напишите quitна этом урок законченесли вы хотите компилировать проекты не OpenGL то просто напиши g++ file.cpp -o fileтам где file.cpp это ваш С++ файл а там где -o file это файл на выходе (вместо file пишите что угодно).надеюсь урок будет полезенпонравилось? поставь плюсик

|
5. ну теперь закрываем редактор, теперь надо все это дело откомпилировать. в терминале пишем g++ main.cpp -lglut -o opengl тут вроде все понятно компилируем файл main.cpp и ставим с библиотеками glut, а -o означает файл будет на выходе, теперь все это дело надо запустим в терминале пишем gdb opengl перед вами тут всякое напишется теперь пишем run теперь ваше приложение запустится чт бы выйти из отладки напишите quitна этом урок законченесли вы хотите компилировать проекты не OpenGL то просто напиши g++ file.cpp -o fileтам где file.cpp это ваш С++ файл а там где -o file это файл на выходе (вместо file пишите что угодно).надеюсь урок будет полезенпонравилось? поставь плюсик
написал первый урок =)
переписывал его 3 раза =))
и вот он итоговый вариант =))
теперь надо только выделить код что бы виден нормально был
подскажите что как сделать что бы он нормально выглядел
SDL это типа Glut но только мощнее намного
в нем намного больше всего он кроссплатформенный как и Glut
в общем он там нам не понадобится оч так сильно
надо будет только для инициализации окна обработке клавишь
так что код написаный с помощью SDL можно легко переделать под Glut
так что уроки полезны будут всем
да и большинство уроков в сети (теже самые nehe) написаны без glut
решил убрать SDL
так как сам сейчас на нем попрограммил и понял что он слишком бредовый
оч сложно понять
glut намного лучше
а со звуком и тд и тп можно пристроить будет как нить отдельно
поставить не могу так как редоктирую у мя все с начала приходится
Одна просьба — прогонять орфографию и пунктуацию вордом перед публикацией.
ну как ты думаеш мог бы я написать статью про то что не знаю??
у мя у самого стоит линукс
там ворда нет
ок и еще выкинь на главную про геймдев может кого заинтересует
а куда делась инфа про SDL и CodeBlocks
Ведь тут есть намек на продолжение:
в первом уроке не будем расматривать CodeBlocks и SDL, но подготовим все до следующих уроков=))
CodeBlocks ваще незнаю — это я так тонко намекаю)), на просьбу продолжать освещать Linux.
умею только настраивать под себя =) ну и там библиотеки подключать
сделаю как нить урок про мой любимый C::B =))
вот только сейчас наобещаю уроков разных и не сделаю их то будет плохо =(( так что вы там пишите мне что бы я не забыл про них
попрошу у админов сделать ветку про линукс и буду там описывать все что сам знаю =)
Мне надо объект в центр координат сдвинуть, чтоб 0,0,0 было по центру объекта. Не подскажешь как сделать?
У меня объект составной(экспортированный с 3ds), двигается только его центральная часть.
Нет другого способа?
у мя как то раз получилось, я клацал де то в object=>Transform но не понял, что помогло. А больше не получалось.(
Заранее спасибо.
ну или skype: isaer
Все делал по порядку…
ставь CB и в настройках билдера пропиши опции компиляции -lGL -lglut и тд
#include <iostream>
#include <ctime>
float x1 = 84.0;
float y1 = 90.0;
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f, 0.0f, 0.0f);
glRectf( 58.0f, 90.0f, -58.0f, -90.0f);
// фигура
glColor3f(0.0f, 1.0f, 0.0f);
glRectf( -3.0f, x1, 3.0f, y1);
glColor3f(0.75f, 0.75f, 0.75f);
glRectf( -3.0f, x1-6.0, 3.0f, y1-6.0);
glColor3f(1.0f, 1.0f, 0.0f);
glRectf( -3.0f, x1-12.0, 3.0f, y1-12.0);
glColor3f(0.60f, 0.40f, 0.70f);
glRectf( -9.0f, x1-12.0, -3.0f, y1-12.0);
glutSwapBuffers();
}
void TimerFunction(int value)
{
x1 -= 6.0;
y1 -= 6.0;
if(x1 <-90.0+12)
{
x1 = 84.0;
y1 = 90.0;
}
glutPostRedisplay();
glutTimerFunc(333,TimerFunction, 1);
}
void SetupRC(void)
{
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
void ChangeSize(GLsizei w, GLsizei h)
{
GLfloat aspectRatio;
if(h == 0)
h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
aspectRatio = (GLfloat)w/(GLfloat)h;
if(w <= h)
glOrtho(-100.0, 100.0, -100/aspectRatio, 100.0/aspectRatio,
1.0, - 1.0);
else
glOrtho(-100.0 * aspectRatio, 100.0 * aspectRatio,
-100.0, 100.0, 1.0, -1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutCreateWindow("GLRect");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutTimerFunc(333, TimerFunction, 1);
SetupRC();
glutMainLoop();
return 0;
}
Не получаеться. Подскажите пожалуйста как запустить в удобной среде. На linuxe 3 дня…
Вот так работает: g++ main.cpp -lglut -o opengl но писать это каждый раз… и писать в текстовом редакторе не удобно. Помогите! )