Подтвердить что ты не робот

Какова цель графической библиотеки, такой как OpenGL?

Я понимаю, что это, наверное, смешной вопрос, но прежде чем пытаться выяснить, какие библиотеки использовать для каких проектов, я думаю, что имеет смысл действительно понять цель таких библиотек в первую очередь.

Многие видеоигры используют библиотеки, такие как OpenGL. Все обучающие программы, которые я видел в таких библиотеках, демонстрируют, как писать код, который говорит компьютеру что-то рисовать. В настоящее время в играх все моделируется с использованием таких программ, как Zbrush, Maya или 3ds Max. Модели текстурированы и хороши. Кажется, все, что вам нужно сделать, это написать цикл анимации, который многократно рисует модели и обновления, а не на самом деле программирует код, чтобы рисовать каждую мелочь. Это было бы чрезвычайно трудоемким и сделало бы модели бесполезными. Итак, где работает OpenGL или Direct 3D по отношению к видеоиграм и 3D-искусству? Что так важно в них, когда все графики уже созданы и просто нужно загружать и рисовать? Используются ли они главным образом для шейдеров и эффектов?

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

4b9b3361

Ответ 1

Кажется, все, что вам нужно сделать, это написать цикл анимации, который многократно рисует модели и обновления, а не программирует код, чтобы рисовать каждую мелочь.

Все, что происходит на компьютере, делает это потому, что программа какой-то формы сообщает ему, что именно делать. Буквы, в которых это сообщение состоит только из-за того, что ваш веб-браузер по выбору загружал этот файл через TCP/IP по протоколу HTTP, расшифровывал его текст в кодировке UTF-8, интерпретировал этот текст в соответствии с XML, HTML, JavaScript, и т.д., а затем отображали видимую часть, как определено стандартом Unicode для текстового макета и в соответствии с HTML и др., используя возможности отображения и оконрования вашей ОС или оконного менеджера или что-то еще.

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

Только HTML ничего не значит. Вы не можете просто взять HTML файл и взорвать его на экране. Некоторый код должен интерпретировать его. Вы можете интерпретировать HTML как текстовый файл, но если вы это сделаете, он теряет все форматирование, и вы увидите все теги. Веб-браузеры могут интерпретировать его как правильный HTML, и в этом случае вы можете увидеть форматирование. Но в каждом случае значение HTML файла определяется тем, как оно используется.

"Рисует модель" часть вашего предлагаемого алгоритма должна выполняться кем-то. Если вы не пишете этот код, вы должны использовать библиотеку или другую систему, которая приведет к появлению модели. И что делает эта библиотека? Как это может привести к появлению модели?

Модель, например веб-страница HTML, сама по себе бессмысленна. Или, говоря иначе, ваш алгоритм можно свести к следующему:

  • Анимируйте модель.
  • ????
  • Profit!

Вам не хватает ключевого компонента: как интерпретировать модель и заставить ее появляться на экране. OpenGL/D3D/программный растеризатор /etc имеет жизненно важное значение для этой задачи.

Ответ 2

Многие видеоигры используют библиотеки, такие как OpenGL.

В первую очередь: OpenGL - это не библиотека, а API (спецификация). API OpenGL может быть реализован в виде библиотеки программного обеспечения, но в наши дни гораздо более распространено внедрение OpenGL в виде драйвера, который вызывает вызовы функций OpenGL в командах управления графическому процессору, сидящему на графической карте (GPU).

Все учебники, которые я видел в таких библиотеках, демонстрируют, как писать код, который говорит компьютеру что-то рисовать.

Да. Это связано с тем, что все должно быть сделано, чтобы использовать их.

В настоящее время в играх все моделируется с помощью таких программ, как Zbrush, Maya или 3ds Max.

В этот момент модели состоят только из большого списка чисел и других чисел, которые показывают, как другие числа образуют какую-то геометрию. Эти цифры не являются готовым к использованию образом.

Модели текстурированы и хороши.

Это куча чисел, а у них есть некоторые дополнительные числа, контролирующие текстурирование. Сами текстуры, в свою очередь, просто цифры.

Кажется, все, что вам нужно сделать, это написать цикл анимации , который рисует модели

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

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

Опять же, нет волшебной функции "нарисовать ее". Рисование модели включает в себя прохождение каждого из своих номеров, в том числе и преобразование их в команды рисования на графический процессор.

Это было бы очень трудоемким временем и сделало бы модели бесполезными.

Как модели бесполезны, когда они контролируют выдачу команд OpenGL. Или вы считаете, что OpenGL используется для создания "моделей"?

Итак, где же OpenGL или Direct 3D входят в видеоигры и 3D-искусство?

Он используется, чтобы превратить числа в 3D-модель, поскольку она сохраняется от модельера, в нечто приятное для просмотра.

Что так важно для них, когда все графики уже созданы.

Графика еще не создана, когда модель выполнена. То, что создано, является моделью и некоторыми вспомогательными данными в виде текстур и шейдеров, которые затем превращаются в графику в реальном времени во время выполнения программы.

и нужно просто загрузить и нарисовать?

Опять же, после загрузки модель представляет собой всего лишь кучу чисел. И средство рисования, превращая эти числа во что-то, на что нужно смотреть, что требует отправки команд рисования графическому процессору (GPU), который происходит с использованием API, такого как OpenGL или Direct3D

Используются ли они главным образом для шейдеров и эффектов?

Они используются, чтобы превратить числа, созданные программой 3D-моделирования (Blender, Maya, ZBrush) в фактическое изображение.

Ответ 3

Перед OpenGL и DirectX игры должны были использовать специальные инструкции в зависимости от того, какая у вас была видеокарта. Когда вы купили новую игру, вам нужно было тщательно проверить, поддерживается ли ваша карта, или вы не можете использовать игру.

OpenGL и DirectX - это стандартизованный API для карт grapics. Библиотека предоставляется производителем карты. Если они соответствуют спецификации, вам гарантируется, что игры будут работать (если они также соответствуют той же спецификации).

Ответ 4

У вас есть данные. Как модель, с вершинами, нормалями и текстурами. Как сказал @datenwolf, все это просто цифры, сидящие на жестком диске или в ОЗУ, а не на экране.

Ваш процессор (который находится там, где вы запускаете программу) не может напрямую разговаривать с экраном. Вместо этого вы отправляете данные, которые хотите нарисовать на GPU. Затем графический процессор извлекает данные. Графические API, такие как OpenGL и Direct3D, позволяют программам, запущенным на процессоре, отправлять данные на графический процессор и настраивать способ их использования. Это грубое упрощение, но похоже, что вам просто нужен обзор.

В конечном счете, каждая графическая программа должна проходить через графический API. Например, когда вы рисуете изображение, вы отправляете графический процессор изображения, а графический процессор рисует его на экране. Нарисуйте текст? Отправьте данные на GPU. Графический процессор привлекает его. Помните, что ваш код не может разговаривать с экраном. Он может разговаривать с GPU через OpenGL или Direct3D, а затем графический процессор извлекает данные.