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

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

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

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

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

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

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

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

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

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

69
globalhost
32 / 24 / 7
Регистрация: 01.08.2014
Сообщений: 115
01.12.2014, 18:20 #2
Туториалы по OpenGL 3+:

https://code.google.com/p/gl33lessons/
http://opengl-tutorial.blogspot.ru/p/blog-page.html
2
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
01.12.2014, 21:44 #3
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
Желательно на русском.
Почти под каждым видео следующего туториала ссылки на код. Класс камера есть. Я пока дошёл до 6-ого видео, где загрузка объектов из Blender'а с помощью библиотеки Assimp. Отличный туториал. Можете не слушать, просто скачайте примеры и переписывайте: GLSL tutorial 1 - Basic setup, concepts, explonations

На русском, мягко говоря, мало книг по современному OpenGL. На английском вот эту книгу, как справочник использую: "Addison-Wesley Professional OpenGL Programming Guide, The Official Guide to Learning OpenGL version 4.3 8th (2013)"

Вот эта книжка пока для меня тяжеловата: Richard S.W. Nicholas H. Graham S. - OpenGL SuperBible (6th Edition) - 2013
1
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
01.12.2014, 22:26  [ТС] #4
8Observer8, Спасибо, посмотрю.
А вы не знаете можно ли где-нибудь взять GLEW для MinGW?
0
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
01.12.2014, 23:39 #5
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
А вы не знаете можно ли где-нибудь взять GLEW для MinGW?
Лично я не знаю. Может кто напишет

Ещё хочу поделиться полезными ссылками: Полезные ссылки на тему OpenGL

Вот ещё замечательное видео: OpenGL - 4 rendering modes speed comparition Там сравнивают четыре способа рисования: immediate mode, display list, vertex array и vertex buffer object В архиве под видео, соответсвенно, четыре проекта. Самый интересный, конечно, это VBO проект

Ещё у него же есть отличные туториал по физическому движку Bullet: Bullet physics tutorial 0 - Examples and installation

И разработка игры про зомби: Zombie shooter FPS game final result
1
Yandersen
19 / 4 / 1
Регистрация: 02.12.2014
Сообщений: 9
02.12.2014, 05:37 #6
Придумал решение древней проблемы z-fighting'а средствами OpenGL 4.5, вот решил поделиться мыслью - вдруг кому тут полезным покажется.
0
snake32
1641 / 1095 / 191
Регистрация: 26.02.2009
Сообщений: 4,060
Записей в блоге: 5
02.12.2014, 14:46 #7
Yandersen, очень интересно. Но хотелось бы увидеть реально работающий пример, пусть даже он не будет доступен большинству пользователей у которых ещё нет поддержки ARB_clip_control. А то возможно вылезет очередной гвоздь в заднем проходе...

ЗЫ: Лучше эту тему вынести в отдельную ветку.
0
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
02.12.2014, 16:00 #8
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
А вы не знаете можно ли где-нибудь взять GLEW для MinGW?
Мне вот расширения тоже понадобились для взаимодействия с шейдерами (glCreateShader(), glShaderSource(), glUniform3f() и т.д.). И я (как и в видео выше) подключаю к проекту файлы GLee.h, GLee.c

P.S. Файл GLee.h нужно подключать до GL/gl.h
1
Вложения
Тип файла: zip GLee.zip (224.6 Кб, 6 просмотров)
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
02.12.2014, 16:23 #9
Примерчик сделал на Qt С++, по этому видео. Здесь загружаются "vertex shader" и "fragment shader" из ресурсов. В примере рисуется квадрат, а цвет для каждой вершины передаётся из главной программы, как атрибут в "vertex shader", а оттуда в "fragment shader". Это демо пример и, видимо, там устаревшие ключевые слова используются, судя по выводу:
0(4) : warning C7555: 'varying' is deprecated, use 'in/out' instead
0(5) : warning C7555: 'attribute' is deprecated, use 'in/out' instead
0(9) : warning C7533: global variable gl_ModelViewProjectionMatrix is deprecated after version 120
0(9) : warning C7533: global variable gl_Vertex is deprecated after version 120
Но зато это вполне рабочий пример, от которого можно танцевать дальше
1
Вложения
Тип файла: zip DataTypesOfGLSL.zip (228.8 Кб, 8 просмотров)
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
02.12.2014, 16:48  [ТС] #10
8Observer8, Спасибо за столько информации, просто мне GLEW на MinGW нужен для уроков http://ogltutor.netau.net

Хотя сейчас все равно студию буду ставить...
0
Yandersen
19 / 4 / 1
Регистрация: 02.12.2014
Сообщений: 9
02.12.2014, 17:07 #11
Мне вот расширения тоже понадобились для взаимодействия с шейдерами (glCreateShader(), glShaderSource(), glUniform3f() и т.д.). И я (как и в видео выше) подключаю к проекту файлы GLee.h, GLee.c

P.S. Файл GLee.h нужно подключать до GL/gl.h
А можно взять в руки OpenGL вплоть до версии 4.5 и более простым способом - подключив один единственный хеадер. Подробнее тут.
Хеадер LoadGL.h заменяет разом все GL-хеадеры, т.к. включает всё, что в них содержится. Уникальная фишка в способе инициализации указателей на функции-расширения. Ничего инициализировать вручную не нужно вообще. Каждый указатель gl-функции по-умолчанию натравлен на соответствующую функцию-загрузчик. При первом использовании функция сама себя инициализирует (подменяет свой указатель), после чего вызывает полученный указатель (если расширение не доступно, вызов просто игнорируется). Поэтому все последующие вызовы функции идут уже напрямую, если инициализация при первом вызове прошла успешно. Таким образом инициализируется лишь то, что Ваша программа использует, и при этом об инициализации отдельно беспокоиться не нужно. Очень удобно.
0
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
02.12.2014, 18:07 #12
Цитата Сообщение от Yandersen Посмотреть сообщение
А можно взять в руки OpenGL вплоть до версии 4.5 и более простым способом - подключив один единственный хеадер.
Эх, жаль для моего случая не подходит. У меня среда Qt Creator с компилятором MinGW и исходники должны в Linux'е собираться. Сейчас с GLee засада получилась. При сборки в Mint выдаёт:
#error qmetatype.h must be included before any header file that defines Bool
Не подскажете, чем можно заменить GLee? Пробовал GLEW исходникам подключать, но не катит
0
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
02.12.2014, 18:14  [ТС] #13
8Observer8, Кстати , на Linux удобно работать?
0
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
02.12.2014, 18:42 #14
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
Кстати , на Linux удобно работать?
Намного удобнее! У меня Mint на Virtual Box установлен. Основная система Win7. С MinGW ещё та мука. Если есть возможность, то я прям в Qt Creator подключаю исходники или с помощью того же Qt Creator'а создаю статическую библиотеку. А Mint - это практически тоже самое, что и Ubuntu. Поэтому сразу гуглю для Ubuntu. Мне нравится, что удобно и быстро устанавливаются все программы в одну строчку в терминале. Захотел поставить что-то -> гуглишь "как установить то-то на Ubuntu" -> обычно быстро находишь команду. Если, к примеру, boost хочется установить, то достаточно написать:
sudo apt-get install libboost-all-dev
Добавлено через 1 минуту
Конечно, опытные люди по-другому поступают, но я пока выкручиваюсь, как могу
0
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
02.12.2014, 19:28 #15
И так, проблема была с тем, что в Windows я должен был подключать GLee.h, чтобы использовать функции для работы с шейдерами glCreateShader() и т.д. А когда пример запустил в Linux, то выскочили ошибки, что некоторые Qt-шные .h файлы должны включаться раньше чего-то там. Решил найти другие расширения, но не нашёл. Не стал я устанавливать GLEW для Qt MinGW. Решил проблему так. Наследую сцену от класса QOpenGLFunctions, который содержит все определения функций для работы с шейдерами

Вот так выглядит .h файл сцены:
Scene.h
Кликните здесь для просмотра всего текста
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
#ifndef SCENE_H
#define SCENE_H
 
#include <QFile>
#include <QGLWidget>
#include <QOpenGLFunctions>
 
class Scene : public QGLWidget, public QOpenGLFunctions
{
public:
    Scene( QWidget *parent = 0 );
    ~Scene();
 
private:
    void initializeGL();
    void paintGL();
    void resizeGL( int w, int h );
 
private:
    void initShader( const QString &vname, const QString &fname );
    void loadFile( const QString &fileName, std::string &str );
    unsigned int loadShader( std::string &source, unsigned int mode );
    unsigned int m_vs, m_fs, m_program;
};
 
#endif // SCENE_H


В конструкторе класса Scene нужно написать две строчки:
C++
1
2
3
4
5
6
Scene::Scene( QWidget *parent ) :
    QGLWidget( parent )
{
    makeCurrent();
    initializeOpenGLFunctions();
}
Теперь запускается и в Linux. Прикрепил исправленный пример
0
Вложения
Тип файла: zip DataTypesOfGLSL.zip (4.5 Кб, 7 просмотров)
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
02.12.2014, 19:53  [ТС] #16
8Observer8, А если выбирать Linux, то что лучше Mint или Ubuntu?
0
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
02.12.2014, 21:52 #17
Цитата Сообщение от Vlad2001_MFS Посмотреть сообщение
А если выбирать Linux, то что лучше Mint или Ubuntu?
Сначала я поставил OpenSuse на Virtual Box, но интернет на нём не заработал. Потом поставил Ubuntu. Опять помучился и не смог настроить. Далее, поставил Mint - интернет заработал. Поэтому мой ответ: Mint KDE лучше, чем Ubuntu. Мне понравилось, что управление, как в OpenSuse, а команды, как в Ubuntu. Для Ubuntu много информации, которая применима и к Mint. Почитайте здесь и поймете почему Ubuntu и Mint похожи

Добавлено через 9 минут
Я сейчас Linux использую только для изучения тех видео туториалов по GLSL в среде Qt Creator. Просто у меня не получилось установить загрузчик Assimp на Win7. А так планирую делать приложения и для Windows и для Linux (несколько дистрибутивов поставлю на Virtual Box)
1
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
05.12.2014, 19:21 #18
Статья и пример Qt классов обёрток над OpenGL 4.3:

OpenGL в Qt 5.1 – Часть 1 и 2

OpenGL Window Example | QtGui 5.3. This example shows how to create a minimal QWindow based application for the purpose of using OpenGL
1
8Observer8
2039 / 1332 / 217
Регистрация: 05.10.2013
Сообщений: 4,228
Записей в блоге: 56
05.12.2014, 19:43 #19
Статью из сообщения выше я и сам пока не понял. А вот пример с треугольником крайне полезен. Просто копируешь себе в проект из того примера файлы класса "OpenGLWindow". Так же как в примере наследуешь свой класс. Добавляешь в ресурсы два файла шейдеров (в примере шейдеры в массиве). Для начинающего - очень хороший пример. Пока руки не набьёшь, заглядывать в класс OpenGLWindow даже и не надо. Просто наследуешь от него, и так же как в пример используешь

В Qt Creator'е есть подсветка GLSL:
0
Миниатюры
Литература, уроки по OpenGL 3+  
Vlad2001_MFS
13 / 7 / 0
Регистрация: 02.06.2014
Сообщений: 27
06.12.2014, 16:13  [ТС] #20
8Observer8, А вы знаете, где можно почитать уроки на русском по основам GLSL?
0
06.12.2014, 16:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2014, 16:13
Привет! Вот еще темы с решениями:

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

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

Литература по OpenGL на JAVA
Какую посоветуете литературу, чтобы научиться программирjвать графику на Java...

OpenGL: литература, статьи и туториалы, что посоветуете
Ребят, какие книги, статьи и туториалы посоветуете по хотябы OpenGL 3.0-3.3?...


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

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

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