Как вы визуализируете игру без использования DirectX или OpenGL? - PullRequest
2 голосов
/ 12 августа 2011

Например, в некоторых играх есть 3 различных режима отображения:

  1. OpenGL
  2. DirectX
  3. Программное обеспечение

Чтоэто режим программного обеспечения?Например, как программисты делают игровой движок, который генерирует изображения без использования OpenGL или DirectX, существуют ли классы в C ++, которые генерируют фреймы?

Ответы [ 3 ]

8 голосов
/ 12 августа 2011

Программное обеспечение означает именно то, что: программное обеспечение.

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

1 голос
/ 12 августа 2011

Программный режим может означать две вещи:

  1. Слой эмуляции, предоставляемый системой.Например, DX11 предоставляет WARP-устройство, где вы, как программист приложения, просто указываете «Я хочу использовать WARP», а остальное делает DirectX.Слой эмуляции в основном использует вариант № 2:

  2. Делайте все вручную.По сути, GFX-карта с аппаратным ускорением в основном рисует только треугольники.Вы можете написать функцию, которая рисует пиксели текстурированного треугольника непосредственно в экранную память видеокарты.В наши дни это не очень быстро (вот почему существуют gfx-карты с аппаратным ускорением), но так было в 80-х и 90-х годах, когда таких карт еще не было.

Для грубой работыОбъяснение того, как работает наложение текстур, просто посмотрите в статье в Википедии: https://en.wikipedia.org/wiki/Texture_mapping

Мне не известны какие-либо gfx-библиотеки, предоставляющие собственный программный уровень, но я уверен, что они где-то существуют.*

0 голосов
/ 12 августа 2011

В качестве примера, DirectX имеет многоуровневую настройку, есть интерфейс кода, который взаимодействует с HAL, или уровень аппаратной абстракции. В зависимости от возможностей базового оборудования HAL может запускать некоторые фрагменты кода на ЦП, поскольку драйверы сообщают, что графический процессор не поддерживает эту функцию. (Да, я знаю, это грубое упрощение)

см .: http://msdn.microsoft.com/en-us/library/gg426101(v=vs.85).aspx

и: http://www.codeproject.com/KB/graphics/DirectX_Lessons_2_.aspx

...