HLFX.Ru Forum Страницы (15): [1] 2 3 4 5 » ... Последняя »
Показать все 223 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- Нубские вопросы (https://hlfx.ru/forum/showthread.php?threadid=2218)


Отправлено qpAHToMAS 30-06-2010 в 10:34:

Question Нубские вопросы

Я никогда не работал ни с OpenGL, ни с C++, ни с какими подобными гигантами программной части, которые используются для создания 3D игр, хотя бы уровня Half-life: Counter-Strike.
По этому позвольте в этой теме я буду задавать вопросы, которые так или иначе связаны с графической и технической частью создания игр. В качестве ответов так же принимаются ссылки на небольшие статьи (не книги).

  1. Всю 3D графику на экран игры выводит OpenGL, а каким образом рисуются 2D объекты, т.е. тексты, спрайты на экране, меню и т.д., тоже OpenGL функции?
  2. Для OpenGL нет разницы что рисовать, пусть это модель или карта? Т.е. везде используется одна система: считывание координат фигур из файла и их воспроизведение в 3D мире?
  3. Почему используются текстуры определенных размеров (16x16, 64x64 и т.д.)? Легче для видеокарты?
  4. OpenGL работает со светом и тенями? Как это вообще реализуется (светлые и темные области уровня)?


Отправлено Дядя Миша 30-06-2010 в 13:03:

1. 2D объекты выводятся прямо перед камерой в ортогональной проекции.
Теми же самыми методами отрисовки.
2. Больше скажу - ОпенГЛ ни сном ни духом ни про какие-то там модели или карты. Это всего лишь слой абстракции для удобства конечного пользователя. Если будет надо - можно с таким же успехом вкомпилить в приложение набор вертексов и текстур и точно так же вывести на экран.
Так иногда поступают в демках физических движков - например модельку кролика зашивают в exe.
3. В принципе новые карточки поддерживают NON Power of two текстуры.
Но лучше не рисковать. Две-три сильно некратные текстуры способны просадить фпс до нуля.
4. Это смотря что понимать под работой со светом и тенями. Если на мапперском уровне - поставил лампочку на карту и включил её, то подобные методы там тоже есть, но они как правило медленные и кол-во источников ограничено шестью-семью. То что мы нарисовали без освещения можно либо затемнить либо еще больше засветить.
Попиксельное затемнение достигается наложением лайтмап на геометрию уровня (умножением яркости лайтмапы на текстуру). Можно делать вертексное освещение (регулировать цвет вертексов). Можно наконец в реалтайме тени накладывать, либо делать засветку простым сложением яркости. Да много методов вообщем.
Вот про модели освещения почитай, если интересно:
http://steps3d.narod.ru/tutorials/l...g-tutorial.html

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено maxbars 30-06-2010 в 13:04:

Цитата:
qpAHToMAS писал:
Всю 3D графику на экран игры выводит OpenGL, а каким образом рисуются 2D объекты, т.е. тексты, спрайты на экране, меню и т.д., тоже OpenGL функции?

Вообще-то есть такая штука, называется растровые шрифты...Тоже средствами opengl реализовано.

2.
ИМХО нет.

3.Сам незнаю.
4.ДА. Светлые создается источник света, темные отбрасывание теней и всё.

__________________
ьфч


Отправлено qpAHToMAS 01-07-2010 в 13:22:

Спасибо за ответ(ы) .

Цитата:
Дядя Миша писал:
2D объекты выводятся прямо перед камерой в ортогональной проекции.
Теми же самыми методами отрисовки.

Удивительно и в тоже время страшно представить как же высчитываются их координаты ("в углу экрана", "от угла на 5 пикселей" и т.д.).
Если спрайт, например, того же радара в CS — это плоскость, то что из себя представляют такие сложные элементы, как консоль, главное меню настроек в том же CS или Option Implicit?

Еще вопросы:
  1. На сколько я понимаю, что бы такая громадная штука как игра работала, надо использовать множество потоков? В одном обрабатывается физика на всем уровне, в другом: поведение игрока со стороны клиента, в прочих: поведение AI и т.д. Это действительно так (уж очень сложно)?
  2. Коллизии и физика в целом напрямую работают с OpenGL, что бы например просчитывать столкновение камеры с картой (как в QuakeIII в режиме наблюдения нельзя летать сквозь карту)?


Отправлено BUzer 01-07-2010 в 13:40:

qpAHToMAS

Цитата:
Удивительно и в тоже время страшно представить как же высчитываются их координаты ("в углу экрана", "от угла на 5 пикселей" и т.д.).

Ничего такого самому высчитывать не надо, всё гораздо проще.
Цитата:
На сколько я понимаю, что бы такая громадная штука как игра работала, надо использовать множество потоков?

Вовсе нет. Обычно, если к игре прикручивают многопоточность, то это для того, чтобы что-нибудь оптимизировать (использовать многоядерность, или что-нибудь загружать в фоне)
Цитата:
Коллизии и физика в целом напрямую работают с OpenGL

Физика не имеет никакого отношения к опенгл.


Отправлено Дядя Миша 01-07-2010 в 15:35:

Цитата:
qpAHToMAS писал:
Удивительно и в тоже время страшно представить как же высчитываются их координаты ("в углу экрана", "от угла на 5 пикселей" и т.д.).

А что в этом страшного? У тебя есть четыре глобальных координаты - четыре угла экрана. От них обычно все и пляшут.
Надо нам, к примеру. нарисовать иконку фонарика, так и пишем:
От правого края экрана отступ минус 10 пикселей.
И от верха плюс 10. (0,0 обычно считается за левый верхний угол экрана).
Цитата:
qpAHToMAS писал:
Если спрайт, например, того же радара в CS — это плоскость, то что из себя представляют такие сложные элементы, как консоль, главное меню настроек в том же CS или Option Implicit?

Не поверишь - точно такие же плоскости.
Консоль - это картинка, на которую "мовевитчем" привязаны буквы.
Цитата:
qpAHToMAS писал:
надо использовать множество потоков

Потоки как правило виртуальные, по типу тчинков в той же халфе.
Настоящие потоки очень муторно использовать из-за синхронизации.
К тому же код, отлично работающий на одной платформе, может давать сбои на другой.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено qpAHToMAS 03-07-2010 в 10:20:

Цитата:
Дядя Миша писал:
Потоки как правило виртуальные, по типу тчинков в той же халфе.

Что-то ничего нагуглить нормального про эти "Виртуальные потоки" не могу , есть какая-нибудь ссылка на теоретическое объяснение того, что это такое и чем они отличаются от обычных, полностью отдельных потоков?

Цитата:
BUzer писал:
Физика не имеет никакого отношения к опенгл.

Видимо все "твердотельные" зоны 3D уровня имеют отдельное место в памяти и уже с этими данными работают всякие коллизии . Я то думал что можно прям так рулить:
code:
если(opengl_плоскость_на_пути) { действие }


Отправлено Government-Man 03-07-2010 в 16:03:

qpAHToMAS можно одни и те же плоскости (точнее говоря - полигоны) скармливать как опенгл так и физическому движку. Не такого понятия как опенгл-плоскость. Плоскость она плоскость и есть. А вообще в современных играх обычно физическая модель хранится отдельно от визуальной и представляет из себя более упрощенную, низкополигональную модель.


Отправлено PoD-Stas 03-07-2010 в 16:04:

qpAHToMAS ОпенГЛу нет дела до того, что творит физический движек с координатами. ОпенГЛ только и делает, что выводит инструкции, котоpые ему даются.


Отправлено Дядя Миша 03-07-2010 в 18:30:

Цитата:
qpAHToMAS писал:
Что-то ничего нагуглить нормального про эти "Виртуальные потоки" не могу

ну я может быть неудачно выразился. Ну ты тчинки видел в хл1 ? А систему тчинков в хл2? Вот это оно и есть.
Цитата:
qpAHToMAS писал:
если(opengl_плоскость_на_пути) { действие }

жэсть.
А если директ3Д или софтвар, тогда што?
Цитата:
Government-Man писал:
можно одни и те же плоскости (точнее говоря - полигоны) скармливать как опенгл так и физическому движку

На кой чёрт опенглу плоскости? Они нужны только на этапе отсечения невидимых полигонов ну и для физики конечно.
Цитата:
Government-Man писал:
А вообще в современных играх обычно физическая модель хранится отдельно от визуальной и представляет из себя более упрощенную, низкополигональную модель.

Например - в первокваке или халфе

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 03-07-2010 в 18:44:

Цитата:
Дядя Миша писал:
На кой чёрт опенглу плоскости?


В данном случае как я понял, автор под "плоскостями" подразумевал полигоны.


Отправлено qpAHToMAS 04-07-2010 в 04:38:

Цитата:
Дядя Миша писал:
ну я может быть неудачно выразился. Ну ты тчинки видел в хл1 ? А систему тчинков в хл2? Вот это оно и есть.

Не видел . HL знаю как игрок и маппер, не больше этого.

Цитата:
Government-Man писал:
В данном случае как я понял, автор под "плоскостями" подразумевал полигоны.

Да, именно так.

Ок, остановлюсь на том, что OpenGL графика и только, а физика, которая взаимодействует с уровнем — совсем другая песня.


Отправлено qpAHToMAS 08-07-2010 в 15:13:

Дядя Миша, и все же не знание того, что такое "тчинки" мне не дает покоя, объясни пожалуйста.


Отправлено Government-Man 08-07-2010 в 15:37:

qpAHToMAS это всего лишь функции в которых выполняется логика энтить в хл (от англ. think - "думать"). В хл можно устанавливать функцию которая будет вызвана в следующий раз: SetThink( MyCoolThink ); и время вызова: pev->nextthink = gpGlobals->time + 0.5f;

"Виртуальными потоками" я бы эту систему не назвал...
К опенгл она тем более не имеет никакого отношения.


Отправлено qpAHToMAS 08-07-2010 в 16:47:

Government-Man, на сколько я понял — это простой поток, только в его начале стоит пауза, которую не допустимо было бы поставить в место, откуда вызывается функция.


Временная зона GMT. Текущее время 07:05. Страницы (15): [1] 2 3 4 5 » ... Последняя »
Показать все 223 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024