Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.53/112: Рейтинг темы: голосов - 112, средняя оценка - 4.53
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
#1

Литература, уроки по OpenGL 3+

01.12.2014, 17:47. Просмотров 20226. Ответов 71
Метки нет (Все метки)

Подскажите пожалуйста литература, уроки и т.п. по OpenGL 3+.
Желательно на русском.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2014, 17:47
Ответы с готовыми решениями:

Уроки OpenGL - FAQ
Уроки OpenGL Оглавление Предисловие Урок 1. Рисование OpenGL в окне на...

Дайте ссылки на уроки по OpenGL в C#
Дайте ссылки на уроки по OpenGL в C#, пожалуйста

Уроки создания движков и редакторов на OpenGL+delphi
Сабж. Подскажите Уроки или киньте исходники движков, написанных на делфи с...

Литература по OpenGL
Здравствуйте, подскажите пожлуйста книгу по OpenGL для новичка (курс по 3Д...

Литература по OpenGL
Посоветуйте, пожалуйста, хорошую литературу по OpenGL. Сейчас читаю OpenGL...

71
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
06.12.2014, 19:31 #21
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
А вы знаете, где можно почитать уроки на русском по основам GLSL?
А я по мере необходимости гуглю, если хочется, что-то сделать. Я пока только научился рисовать простые фигуры, передавать данные в шейдерную программу вертексов, а из неё в фрагментный шейдер. Всё это в прикреплённом примере найдёте. Там треугольник передвигается по нажатию стрелок. Если ещё что-то интересное сделаю, то отпишусь. На мой взгляд, самый лучший вариант - это разбирать чей-то подходящий и хороший код небольших примеров

Советую Qt скачать. С ним намного проще работать с шейдерами OpenGL 4.3

Установка Qt на Windows

Кликните здесь для просмотра всего текста
Переходим по ссылке -> кликаем на ссылку "View All Downloads" -> выбираем "Qt 5.3.2 for Windows (MinGW)"

Запускаем скаченный файл и следуем инструкции установки


Установка Qt на Linux (Mint и Ubuntu)

Кликните здесь для просмотра всего текста
Переходим по ссылке -> кликаем на ссылку "View All Downloads" -> выбираем "Qt 5.3.2 for Linux"

Переходим в директорию скаченного файла с помощью файлового менеджера Dolphin. Для этого нажимаем Alt+F2 и в появившемся окошке вводим: Dolphin -> нажимаем Enter

Сделаем скаченный файл запускаемым. Для этого нажимаем правой кнопкой мыши по файлу и выбираем "Свойства” ("Properties") -> открываем среднюю вкладку "Права доступа” ("Permissions”) -> ставим галочку "Is executable” -> нажимаем "OK”

Запускаем скаченный файл и следуем инструкции установки

Скачиваем и устанавливаем компилятор и отладчик. Для этого открываем терминал (Alt+F2 -> terminal). В открывшемся теримнале набираем команды:

Примечание. Перед установкой будет задан вопрос: "Do you want to continue [Y/n]", вводим: y -> нажимаем Enter

sudo apt-get install build-essential

sudo apt-get install mesa-common-dev

sudo apt-get install libglu1-mesa-dev -y

Ждём окончания установки

Запускаем Qt Creator. Для этого нажимаем Alt+F2 и в появившемся окошке вводим: Qt Creator -> нажимаем Enter
0
Вложения
Тип файла: zip MovingByKeys.zip (3.9 Кб, 6 просмотров)
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
06.12.2014, 19:49 #22
Наверняка многое по GLSL можно черпать из исходников книг: RedBook и SuperBible. Обе по OpenGL 4.3. Но я пока набиваю руки на простых примерчиках, набирая каждый раз код заново. Так запоминается намного лучше и добавляется, что-то новое

Такие мини-задания себе придумываю (и набираю без копипаста!):
  • пердвинуть треугольник с помощью стрелок
  • повернуть треугольник с помощью стрелок
  • нарисовать квадрат из двух треугольников
  • перетащить квадрат с помощью мышки
  • отдалить\приблизить квадрат с помощью колёсика
  • вызов контекстного меню с помощью правой кнопки мыши
  • нарисовать два треугольника и перетаскивать один и другой
  • и т.д.

Правда это не совсем GLSL Но он тут есть. Каждый раз заново набираю код и GLSL лучше понимается с каждым набором

Это пока на ближайшее будущее придумал. Ещё не реализовал. Уже можно что-то по GLSL придумывать: какие-нибудь мини-задания для себя. Для этого надо начать разбирать примеры из книг, доводить до автоматизма некоторые конструкции и двигаться дальше, добавляя новые
0
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
06.12.2014, 21:24  [ТС] #23
8Observer8, Спасибо, за пример!
А Qt у меня уже установлен, изучал чуть-чуть и под OpenGL 2.0 на Qt писал
А вы пробовали OpenGL 3+ в классы оборачивать?
Моя видеокарта не поддерживает OpenGL 4, у меня NVidia Geforce GTS 250. Старенькая, но очень классная!
Так что для меня максимум - это OpenGL 3.3
0
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
06.12.2014, 22:28 #24
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
А вы пробовали OpenGL 3+ в классы оборачивать?
Неа, не пробовал. А в чём подвох? С контекстом рисования? Я пока в теме смены контекста рисования не разбирался

Qt удобен тем, что разработчики обернули многие классы OpenGL в классы. Поэтому работать с OpenGL стало удобнее, безопаснее и приятнее

Интересно, запустится ли мой пример на вашей машине
0
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
06.12.2014, 23:24  [ТС] #25
8Observer8, Насчет обертывания в классы я спросил просто так.
Надеюсь, что запуститься!
Qt я изучал чуток и мне очень понравился, но пока учусь, буду на чистом OpenGL писать, так мне кажется будет полезней и лучше.
0
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
06.12.2014, 23:56 #26
Vlad2001_MFS, если будут ссылочки интересные попадаться по GLSL, то кидайте в тему. В том туториале, на который вы давали ссылку, мне понравился этот урок
0
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
08.12.2014, 13:51  [ТС] #27
8Observer8, Хорошо буду кидать ссылки.

Добавлено через 18 минут
8Observer8, У меня огромнейшие проблемы!
Моя видеокарта поддерживает OpenGL 3.0, а не OpenGL 3.3.
А я учусь по урокам для OpenGL 3.3.
Вчера закончил второй урок(https://code.google.com/p/gl33lessons/wiki/Lesson02), запустил, получил кучу ошибок(невозможно было получить адрес функции), пробовал исправлять, не получалось. Сегодня утром решил посмотреть, а поддерживает ли вообще моя видеокарта OpenGL 3.3, оказывается нет!
Что делать дальше вообще не знаю

Добавлено через 13 минут
Тревога отменяется!
Скачал готовый проект попробовал скомпилировать, сначала не скомпилировался, но потом исправил ошибки и он запустился!
Моя видеокарта не когда еще меня не подводила, только пугала, как сейчас!

Добавлено через 17 часов 36 минут
Вот полезная ссылка:
www.gamedev.ru/code/articles/faq_matrix_quat
1
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
09.12.2014, 17:54 #28
Books on OpenGL and 3D Graphics Coding
1
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
09.12.2014, 20:10  [ТС] #29
8Observer8, А вы не могли бы описать, как вы инициализируете OpenGL 3+ в Qt?
0
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
10.12.2014, 09:08 #30
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
8Observer8, А вы не могли бы описать, как вы инициализируете OpenGL 3+ в Qt?
Я начал было описывать, но почувствовал, что текстом трудно доступно описать и много времени отнимет. Выходом оказалось записать видео: http://www.youtube.com/watch?v=4za8ezKvMPs

Это моё первое видео и как говорится - первый блин комом. Я забыл в конце метода paintGL() написать:
C++
1
m_program->release();
Перезапишу видео позже. По той ссылке оно не будет доступно. Несколько затянуто получилось, но могло быть и хуже Во всяком случае, лучше, чем ничего
0
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
10.12.2014, 14:59  [ТС] #31
8Observer8, Спасибо!

Добавлено через 40 минут
8Observer8, Если подключаешь QOpenGLFunctions, то указывать адреса функций вручную не надо, я правильно понял?
0
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
10.12.2014, 18:06 #32
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
Если подключаешь QOpenGLFunctions, то указывать адреса функций вручную не надо, я правильно понял?
В классе QOpenGLFunctions есть метод initializeOpenGLFunctions(). Вот этот метод и назначает адреса. Его нужно вызвать в функции void Scene::initializeGL(){} Вручную указывать адреса не нужно и это здорово

Добавлено через 5 минут
Vlad2001_MFS, если вам стало интересно, то подпишитесь на мой блог под аватаром. Буду выкладывать небольшие видео ролики по мере накопления опыта

Добавлено через 9 минут
Rendering in 3D
0
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
10.12.2014, 20:30  [ТС] #33
8Observer8, Спасибо за ссылку, на блог подписался.
А вы никогда не пробовали создание окна в WinAPI обернуть в класс?
Я сейчас пробую просто, но WndProc не получается в класс засунуть.
0
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
10.12.2014, 21:08 #34
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
А вы никогда не пробовали создание окна в WinAPI обернуть в класс?
Не пробовал
0
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
10.12.2014, 22:53  [ТС] #35
8Observer8, В видео вы при создании массива вершин не генерировали Vertex Buffer Object и Vertex Array Object, хотя в уроке(https://code.google.com/p/gl33lessons/wiki/Lesson02) VBO и VBA буферы создавались.
То есть, как я понимаю, их создавать не обязательно?
0
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
11.12.2014, 09:05 #36
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
То есть, как я понимаю, их создавать не обязательно?
Если честно, я не могу точно ответить на вопрос. Для меня главная задача это нарисовать, а каким способом это сделано - не важно. Я привёл пример как рисовать с помощью массивов вершин и цветов. Как я понимаю - это тоже современный способ. А может так оказаться, что это более современный способ, чем VBO. По-моему, научился рисовать треугольник - двигайся дальше. Следующие видео думаю сделать на тему наложения текстуры на треугольник (задание массива текстурных координат), рисование квадрата (с помощью двух треугольников) и наложения текстуры на квадрат. А дальше пойдёт несколько видео по работе с мышкой и клавиатурой:
  • перемещение и вращение с помощью мыши и клавиатуры
  • изменение масштаба с помощью колёсика мыши

Кстати, для работы с VOА в Qt есть класс QOpenGLVertexArrayObject. Он здесь в списке: http://doc.qt.io/qt-5/painting-3d.html

Добавлено через 1 час 3 минуты
Вот так вот рисуется квадрат

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void Scene::paintGL()
{
    glClear( GL_COLOR_BUFFER_BIT );
 
    if( !m_program->bind() )
        return;
 
    QMatrix4x4 matrix;
    matrix.ortho( -2.0f, 2.0f, -2.0f, 2.0f, 2.0f, -2.0f );
    matrix.translate( 0.0f, 0.0f, -1.0f );
    m_program->setUniformValue( m_matrixUniform, matrix );
 
    static GLfloat vertices[] =
    {
        -1.5f, -0.5f,
        -0.5f, -0.5f,
        -1.5f, 0.5f,
        -1.5f, 0.5f,
        -0.5f, -0.5f,
        -0.5f, 0.5f
    };
 
    static GLfloat colors[] =
    {
        1.0f, 0.0f, 0.0f,
        0.0f, 1.0f, 0.0f,
        0.0f, 0.0f, 1.0f,
        1.0f, 0.0f, 0.0f,
        0.0f, 1.0f, 0.0f,
        0.0f, 0.0f, 1.0f
    };
 
    glVertexAttribPointer( m_posAttr, 2, GL_FLOAT, GL_FALSE, 0, vertices );
    glVertexAttribPointer( m_colAttr, 3, GL_FLOAT, GL_FALSE, 0, colors );
 
    glEnableVertexAttribArray( m_posAttr );
    glEnableVertexAttribArray( m_colAttr );
 
    glDrawArrays( GL_TRIANGLES, 0, 6 );
 
    glDisableVertexAttribArray( m_colAttr );
    glDisableVertexAttribArray( m_posAttr );
 
    m_program->release();
}
0
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
11.12.2014, 09:07 #37
Картинка в помощь:
0
Миниатюры
Литература, уроки по OpenGL 3+  
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
11.12.2014, 14:31  [ТС] #38
8Observer8, Спасибо, я просто учил OpenGL1.1 по урокам от NeHe(до 19 урока дошел), а потом решил изучать современный OpenGL.
Я спросил про VBO и VOA, потому что в уроках по которым я учусь они используются, но мне эти буферы жутко не нравятся, вот и решил спросить, обязательно ли их использовать.
Кстати, может лучше квадрат нарисовать лентой треугольников или нет?
0
8Observer8
2229 / 1407 / 226
Регистрация: 05.10.2013
Сообщений: 4,371
Записей в блоге: 56
11.12.2014, 23:26 #39
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
Кстати, может лучше квадрат нарисовать лентой треугольников или нет?
Я пока выбрал тот метод которым треугольник и квадрат нарисовал в предыдущем сообщении. Нужно время, чтобы повариться в этом

То есть задавать всё массивами: массив координат вершин, массив цветов (или массив текстурных координат) и т.д. А потом рисовать функцией: glDrawArrays()
0
maritux
Заблокирован
13.12.2014, 12:15 #40
Vlad2001_MFS, делай как пишут в уроках по опенгл 3.3 и старайся НЕ использовать Qt, потому что никакой легкости оно не дает, а наоборот инкапсюлирует опенгл интерфейс, что мешает изучению опенгл.
0
13.12.2014, 12:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2014, 12:15

Литература по OpenGL
Доброго времени суток, многоуважаемые программеры "и не очень"! ;) На курсе...

Литература по OpenGL ES
Здравствуйте, появилась срочная необходимость разобраться с OpenGl ES на C++....

Литература по OpenGL
Хоть тема и банальная, но поискав в интернете, я начал читать OpenGL -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru