Суббота, 23 Ноября 2024, 00:41

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
C++ и 3D графика (OpenGL или Direct3D)
s3dworldДата: Среда, 20 Января 2010, 12:25 | Сообщение # 1
был не раз
Сейчас нет на сайте
Добрый день!

Вот решил написать игру, работал немного в OpenGL раньше, но всё таки больше в Direct3D. Конечно удобно что в последнем есть матрицы и вектора, хотя как-то те же вектора я и для OpenGL писал. Это не сложно. Просто OpenGL я программировал ещё тут, который шёл вместе с Visual C++ 6.0, а какие возможности у него сейчас, какие функции и структуры появились, я не знаю. Вот и хотелось бы мне обсудить это, чтобы Вы поделились своим опытом. А то мне в голову уже давно въелось: если Windows, то только Direct3D!

Direct3D подготавливает специальный буфер для хранения вершин. Потом их там можно изменять и от туда их можно извлекать. А вот в OpenGL все данные хранятся в массивах и вообще где хочешь. И потом прямо в момент визуализации они берутся из обычных переменных. По крайней мере это раньше так было. Расскажи те как сейчас. Что нового.

В обще какие плюсы у одного и другого, а так же какие минусы. Думаю на скорости это не так сильно влияет. А вот скажем средства для создания теней, зеркал, какие буфера есть и дополнения. Если кто знает, расскажи те, опишите. Мне будет очень интересно. Буду благодарен. И ещё один вопрос...вывод 2D графики.

В Direct3D я для этого использовал формат вершин RHW (экранные координаты). Создавал два треугольника, привязывал координаты текстуры и отображал. Получалось как то размазано (ну это всякие фильтрации). Говорят есть ещё способ через спрайты. Расскажи те как лучше и как вообще можно.

И хотелось бы узнать как выводить 2D графику через OpenGL.

Говоря про 2D графику, я имею ввиду рисунки с жёсткого диска, которые бы просто напросто формировали интерфейс игры (ну там рисунок крестика над здоровьем игрока и другое...).

Жду Ваших ответов. Заранее, большое спасибо!

BOOMДата: Пятница, 22 Января 2010, 17:13 | Сообщение # 2
I am the creator of ADE
Сейчас нет на сайте
1. И там, и там есть плюсы и минусы.(их долго перечислять.)

Quote (s3dworld)
И хотелось бы узнать как выводить 2D графику через OpenGL.

Я тебе скажу на словах: с помощью плоскости (в 3D), так выводит DX и можно сделать в ОпенГЛ.


______________________________
Я вернулся, и это чудо.
______________________________
TimДата: Пятница, 29 Января 2010, 11:25 | Сообщение # 3
был не раз
Сейчас нет на сайте
Ну, во-первых главное отличие в том, что Direct3D - это библиотека, а OpenGL - стандарт библиотеки (на базовом уровне). Существуют различные реализации OpenGL, и порой они выдают немного непохожую друг на друга графику. Это минус. Зато есть ощутимый плюс: существуют реализации почти для всех современных платформ. А D3D - только для Windows. Так что, если разрабатывать под разные платформы, альтернатив нет - только OpenGL.

Во-вторых, в OpenGL нет встроенных средств загрузки изображений, моделей, создания окна, обработки ввода. Поэтому почти всегда приходится навешивать на программу дополнительные библиотеки: GLUT, SDL, FreeImage и др. Благо, они тоже кроссплатформенные.

И еще: я с D3D не работал, но слышал, что, в отличие от OpenGL, где нужно просто последовательно вызывать функции рисования, там содается специальный буфер, который заполняется данными о том, что нужно рисовать, и потом этот буфер отправляется на выполнение. Плохо это, или хорошо - не могу судить. Просто это иной подход. Поправьте меня, если я не прав.

VinchensooДата: Пятница, 29 Января 2010, 13:12 | Сообщение # 4
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (Tim)
Во-вторых, в OpenGL нет встроенных средств загрузки изображений, моделей, создания окна, обработки ввода. Поэтому почти всегда приходится навешивать на программу дополнительные библиотеки: GLUT, SDL, FreeImage и др. Благо, они тоже кроссплатформенные.

В OpenGL нет ничего, кроме функций рисования, в принципе. У него 1 функция- отрисовать то, что ему скажет программист.
А вот DX уже работает как коллекция библиотек, там и рендер, и загрузки, и звук, и даже сеть есть.
Quote (s3dworld)
И хотелось бы узнать как выводить 2D графику через OpenGL.

Читаешь файл изображения и вперед, отрисовываешь


PesetsДата: Пятница, 29 Января 2010, 16:54 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Quote (s3dworld)
И хотелось бы узнать как выводить 2D графику через OpenGL.

Если более точно, то есть функция gluOrtho2D, она, так сказать, фиксирует 2д режим. После чего вместо glVertex3* можно использовать glVertex2*, причем, если проекция была установлена так: gluOrtho2D(0,<ширина экрана>,<высота экрана>,0) , то координаты вершин будут соответствовать координатам пикселей на экране.



  • Страница 1 из 1
  • 1
Поиск:

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