GLUT. Нужна помощь новичку :(
| |
Saitei | Дата: Вторник, 01 Января 2013, 17:25 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вообщем я пока что написал вот такой код (согласен, его очень мало. Но сжальтесь над новичком)) ): Код #include <glut.h> //OpenGL Utility Toolkit (GLUT)
void Render() { glClear(GL_COLOR_BUFFER_BIT); glFlush(); }
void Init() { glClearColor(0,0,0,0); //Цвет фона (в формате RGBA) }
int main(int argc, char** argv) { /*Инициализация*/ glutInit(&argc, argv); //Инициализация GLUT glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //Режим вывода графики на дисплей glutInitWindowSize(640, 480); //Размеры создаваемого окна glutInitWindowPosition(150,150); //Положение созадваемого окна glutCreateWindow("Saitei"); //Создаём окно с определенным заголовком /*Регистрация функций*/ glutDisplayFunc(Render); //Регистрируем цикл рисования Init(); //Инициализация glutMainLoop(); //Главный цикл GLUT return 0; } Пожалуйста, обїясните мне конкретнее что делает glClear(GL_COLOR_BUFFER_BIT); glFlush(); и glClearColor(0,0,0,0);? Ну да, комментировал я сам, искал. Но во многих местах я не совсем уверен. Если есть в комментариях кода какие-то неточности - пожалуйста, поправьте меня. Заранее благодарю, обязательно поставлю плюсы
|
|
| |
TimKruz | Дата: Среда, 02 Января 2013, 00:03 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Цитата (Saitei) обїясните мне конкретнее что делает glClear(GL_COLOR_BUFFER_BIT); glFlush(); и glClearColor(0,0,0,0);? Это функции OpenGL и к GLUT не имеют отношения; функции GLUT начинаются с префикса glut. glClear() очищает что-либо, единственный аргумент - флаги, обозначающие, что требуется очистить. В данном случае - glClear(GL_COLOR_BUFFER_BIT) очищает буфер цвета, т.е. удаляет картинку с экрана, закрашивая заранее заданным цветом. Для 3D (когда используется буфер глубины) следует использовать так: glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT), т.е. перед перерисовкой сцены очищать буферы цвета и глубины. glClearColor(Красный,Зелёный,Синий,Альфа) задаёт цвет, которым будет закрашен буфер цвета после вызова glClear(). Цвета и альфа задаются в промежутке 0..1 (вещественные), альфа не используется (я не понял, как она влияет на результирующую картинку - вроде бы никак). Что такое glFlush понятия не имею, первый раз вижу, так что вот тебе ссылка на официальную документацию OpenGL (на английском, конечно). Что-то она там со временем выполнения команд OpenGL делает. Цитата (Saitei) GLUT_SINGLE Советую сразу использовать GLUT_DOUBLE, т.е. двойной буфер. Не знаю GLUT, но, вероятно, потребуется в Render() дописать вызов SwapBuffers(указатель_окна). А, может быть, GLUT сам меняет буферы местами. Надо читать руководство по эксплуатации.
P.S. Может быть, попробуешь разобраться (хотя бы в теории) с чистым OpenGL, а потом утилиты типа GLUT начнёшь юзать?
Сообщение отредактировал TimKruz - Среда, 02 Января 2013, 00:08 |
|
| |
Saitei | Дата: Среда, 02 Января 2013, 15:26 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Цитата (TimKruz) P.S. Может быть, попробуешь разобраться (хотя бы в теории) с чистым OpenGL, а потом утилиты типа GLUT начнёшь юзать? Ох... Здесь я на все 100% солидарен... Только есть проблемы - а с чего начинать учить чистый OpenGL? Я книжечки уже искал, но в основном находил справочники (например от книги "OpenGL. Красная книга" я ничего не извлёк, так как там толком ничего не объясняют и, как мне показалось, там всё написано для людей "уже в теме"). Если посоветуете книжку для чайника - буду ОЧЕНЬ благодарен. Ищу уже чёрти-сколько, а никак найти не могу. Я бы купил, но в городе моём таких книг нет. А ждат ьпока придет посылка из интернета - чересчур долго, выдержки не хватит..)) Вообще существуют ли такие книги? Чтобы всё для чайника писалось, с примерами кода, с постановкой и решением определенных задач? И на русском языке? Я конечно понимаю, знание английского языка - мощное оружие (коим я владею хорошо), но всё равно хочется что-нибудь почитать на родном языке... Вы можете что-нибудь посоветовать? Просто ищу - а ничего найти не могу. Вот просто книг "С++ с нуля" - море, а вот OpenGL...
|
|
| |
ArdaDragon | Дата: Среда, 02 Января 2013, 15:47 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Почитай здесь.
|
|
| |
Saitei | Дата: Среда, 02 Января 2013, 15:48 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| ну и... чтобы объяснялось практически ВСЁ... Просто какой раз уже сталкиваюсь с "уроками", где вместо полезной информации в голову впихивают пустоту. То есть совсем ничего не объясняют и говорят: "Вставьте код, теперь у вас ...". Я просто человек вредный, страдаю чувством неполноценности. Если вижу что-то непонятное - жутко начинает это беспокоить
|
|
| |
MrAkakuy | Дата: Среда, 02 Января 2013, 15:52 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Цитата (TimKruz) вероятно, потребуется в Render() дописать вызов SwapBuffers(указатель_окна). А, может быть, GLUT сам меняет буферы местами Тот пример, который взял Saitei - это ересь. Полнейшая. glFlush() работает только для GLUT_SINGLE, для GLUT_DOUBLE (который и надо использовать в идеале) нужно и вправду менять буффера местами. Только не виндовской функцией SwapBuffers(указатель_окна), а функцией glutSwapBuffers().Добавлено (02.01.2013, 15:52) --------------------------------------------- И вообще, Saitei, переходи на GLFW - лучше, новее, быстрее, удобнее.
|
|
| |
ArdaDragon | Дата: Среда, 02 Января 2013, 15:55 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Saitei, для таких людей и существует документация. Читай её.
|
|
| |
TimKruz | Дата: Среда, 02 Января 2013, 19:18 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| Цитата (MrAkakuy) И вообще, Saitei, переходи на GLFW - лучше, новее, быстрее, удобнее. Раз так, то стоит предоставить выбор. Инструментов много, каждый имеет свои преимущества и недостатки. Saitei, когда изучишь хотя бы основы OpenGL, выберешь подходящий инструмент для своих конкретных целей... Цитата (MrAkakuy) GLUT_DOUBLE (который и надо использовать в идеале) Ну смотря для чего используется; иногда нужно просто вывести одну статичную картинку, а двойной буфер будет лишней нагрузкой... Цитата (Saitei) То есть совсем ничего не объясняют и говорят: "Вставьте код, теперь у вас ...". Некоторые сначала предлагают код, потом разъясняют смысл новых для читателя функций. Цитата (Saitei) посоветуете книжку для чайника Я бы посоветовал одну книгу, но она для Delphi только. Но если есть хорошая книга на русском для Delphi, то для си их должна быть целая куча, ты просто искать не умеешь.
|
|
| |
kurbanozavr | Дата: Среда, 02 Января 2013, 20:33 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| pmg.org.ru/nehe/index.html
|
|
| |
|