Воскресенье, 09 Августа 2020, 08:10

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » GLUT. Нужна помощь новичку :(
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 сам меняет буферы местами. Надо читать руководство по эксплуатации. biggrin

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, то для си их должна быть целая куча, ты просто искать не умеешь. wink


kurbanozavrДата: Среда, 02 Января 2013, 20:33 | Сообщение # 9
был не раз
Сейчас нет на сайте
pmg.org.ru/nehe/index.html
Форум игроделов » Программирование » C/C++ » GLUT. Нужна помощь новичку :(
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2020
free games download
Рейтинг