Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2013, 16:39   #1
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию Путь в OpenGL через Qt C++

Привет всем!

В этой теме я буду выкладывать разные примеры через которые я познаю OpenGL. Конечная цель мне неизвестна. О разработке движка, игры или САПР я ещё даже не думаю. Пока мне просто интересно, что-то создавать, а потом приближать-отдалять, крутить-вертеть Главное, что рядом мощь С++ и библиотеки Qt.

Первое с чего я начал - это нашёл статью с примером кода. Ссылка: http://www.gamedev.ru/code/articles/OpenGL_Qt4

Если честно, то я далеко не всё понял, но постепенно буду разбираться, создавая короткие примеры на базе найденного кода. Надеюсь на советы и замечания форумчан, и что данная тема кому-то пригодится.
8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 16:40   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Установка инструментария

- скачиваем и устанавливаем MinGW (в папку по умолчанию: C:\MinGW): http://sourceforge.net/projects/mingw/

- скачиваем и устанавливаем "Qt libraries 4.8.5 for Windows (minGW 4.4, 317 MB)", ссылка: http://qt-project.org/downloads

- скачиваем и устанавливаем "Qt Creator 2.8.0 for Windows (52 MB)" (IDE-редактор): http://qt-project.org/downloads
8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 16:43   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Создание пустого проекта в Qt

- запускаем Qt Creator
- в меню выбираем: File -> New file or Project...
- выбираем "Other Project" и "Empty Qt Project"
- нажимаем кнопку "Choose..."
- в поле "Name" вводим имя проекта: HelloWorld
- указываем путь размещения проекта в поле "Create in"
- нажимаем кнопку "Next"
- у меня появляется следующее окно, где я убираю галочку "Microsoft Visual C++":



- нажимаем кнопку "Next"
- нажимаем кнопку "Finish"
- кликаем правой кнопкой мыши по имени проекта:



- выбираем "Add New..."
- в открывшемся окне выбираем "С++" "С++ Source File", как на рисунке:



- нажимаем кнопку "Choose..."
- в поле "Name" вводим имя файла: main
- нажимаем кнопку "Next"
- нажимаем кнопку "Finish"
- добавляем в файл ".pro" следующую строку:

QT += opengl

Выглядит так:

8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 16:44   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

- в файл main.cpp копируем следующий код:
Код:
#include <QApplication>
#include <QDebug>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    qDebug() << "Hello, World!";

    return app.exec();
}
Далее запустим наше приложение и выполним программу в пошаговом режиме.
8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 16:45   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Работа с Qt Creator

- в меню выбираем "Build" -> "Run" либо нажимаем "Cltr+R" либо зелёный треугольник на панели инструментов
- в окне "Application Output" должен появиться результат: Hello, World!

Если приложение не запустилось, то
- в меню нажимаем "Tools" -> "Options..."
- справа выбираем "Build & Run"
- выбираем вкладку "Kits", у меня окно выглядит так:



Насколько я помню у меня в "Kits" не было ни "Microsoft Visual C++" ни "MinGW", а мне нужен был "MinGW" и я его добавил вручную. Для этого:
- нажимаем кнопку "Add"
- в поле "Name" вводим имя, например (в моём случае): MinGW x86 32bit
- выбираем в поле "Compiler" -> (в моём случае) "MinGW x86 32bit" (если нет, то нажимаем кнопку "Manage..." напротив поля "Compiler"; добавляем компилятор, нажав кнопку "Add", в моём случае это C:/MinGW/bin/g++.exe)
- напротив поля "Debbuger" нажимаем кнопку "Edit" и указываем путь до отладчика, в моём случае это "C:/MinGW/bin/gdb.exe"
- в поле "Qt version" выбираем "Qt 4.8.5 (4.8.5_MinGw") (если нет, то нажимаем кнопку "Manage..." напротив поля "Qt version; добавляем qmake, нажав кнопку "Add", в моём случае это C:/Qt/4.8.5_MinGw/bin/qmake.exe)
- нажимаем кнопку "OK"
- ставим точку останова, для этого кликаем на отмеченном месте, как показано на рисунке:



- в меню выбираем "Debug" -> "Start Debugging" -> "Start Debugging" либо нажимаем "F5" либо зелёный треугольник c жуком на панели инструментов

У меня обычно появляется следующее сообщение, но я нажимаю "Continue Anyway"


- на отмеченном месте появляется стрелочка:



- нажимаем F10, чтобы выполнять программу в пошаговом режиме (либо F11, чтобы зайти внутрь функции)
8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 16:46   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Икосаэдр

Этот код полностью взят отсюда (там все подробные пояснения к коду): http://www.gamedev.ru/code/articles/OpenGL_Qt4

Икосаэдр можно вращать с помощью мыши (и стрелок на клавиатуре), приближать и отдалять с помощью колёсика мыши.



- создаём пустой проект c именем: Icosahedron
- добавляем класс:

Class name: "Scene3D"
Base class: QGLWidget
Type information: Inherits QWidget

Рассмотрим, как добавить класс.
8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 16:47   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Добавление класса

- кликаем правой кнопкой мыши по имени проекта:



- выбираем "Add New..."
- в открывшемся окне выбираем "С++" "С++ Class", как на рисунке:



- нажимаем кнопку "Choose..."
- в поле "Class name" вводим имя класса
- в поле "Base class" вводим имя класса-родителя
- выбираем "Type information"
- нажимаем кнопку "Next"
- нажимаем кнопку "Finish"
8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 16:58   #8
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Копируем следующий код из прикреплённых файлов в соответствующие файлы проекта.
Вложения
Тип файла: zip Icosahedron.zip (5.8 Кб, 36 просмотров)
8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 17:00   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Координатные оси, которые можно вращать, приближать и отдалять

Этот проект тот же самый, что и предыдущий, в этом я удалил всё что связано с икосаэдром, а оставил только оси координат. Координатные оси можно вращать, приближать и отдалять.



- создаём пустой проект c именем: Axes
- добавляем класс со следующими атрибутами:

Class name: "Scene3D"
Base class: QGLWidget
Type information: Inherits QWidget

Копируем следующий код из прикреплённых файлов в соответствующие файлы проекта.
Вложения
Тип файла: zip Axes.zip (2.1 Кб, 43 просмотров)
8Observer8 вне форума Ответить с цитированием
Старый 16.08.2013, 17:03   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Построение отрезка по двум введённым координатам в 3D-пространстве

Этот проект похож на предыдущий. Я добавил возможность задавать точки отрезка. Координатные оси и отрезок можно вращать, приближать и отдалять.



- создаём пустой проект c именем: Line
- добавляем класс "MainWindow" со следующими атрибутами:

Class name: "MainWindow"
Base class: QMainWindow
Type information: none

- добавляем класс "Scene3D" со следующими атрибутами:

Class name: "Scene3D"
Base class: QGLWidget
Type information: Inherits QWidget

Копируем следующий код из прикреплённых файлов в соответствующие файлы проекта.
Вложения
Тип файла: zip Line.zip (3.6 Кб, 46 просмотров)
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скриншот экрана через OpenGL UltraCoder Qt и кроссплатформенное программирование С/С++ 0 08.08.2012 17:46
Путь к IB через программу svyatoi777 Помощь студентам 0 25.03.2011 19:23
Загрузка в Image через путь, выбранный в ShellListView artemavd Общие вопросы Delphi 1 20.08.2010 19:12
Вывод картинки через OpenGL KIV_95 Помощь студентам 1 15.08.2010 12:18
Как программно узнать путь к базе.Соединение через adoconnection. Moel БД в Delphi 1 26.10.2007 08:32