Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Переключение между Direct3D и OpenGL [Delphi, 3D]


Ricks ©   (2005-11-30 00:42:00) 

Каким образом делают так, чтобы программы (игры) выводились как при помощи Direct3D, так и при помощи OpenGL?
Например WarCraft III - там ведь можно выбрать, что использовать...
"war3.exe -opengl"всего лишь!


П7   (2005-11-30 15:10:00) [1]


> Sphinx ©   (30.11.05 14:28) [6]

Ну да, ну да, ты прав... (:


Sphinx   (2005-11-30 14:28:00) [2]

Там в моем посте жуткая ошибка (точнее опечатка), которую ни кто и не заметил :)

исправленному верить =0
TD3DRender = class (TRender)
...
TOGLRender = class (TRender)
...


Кефир87   (2005-11-30 13:16:00) [3]

http://citkit.dl.sourceforge.net/sourceforge/quake2delphi/DelphiQuake2Source_20.04.2004.zip


П7   (2005-11-30 11:52:00) [4]


> То есть, приходиться писать отрисовку как для D3D, так и
> для OpenGL?

Да, иначе всё было бы слишком просто.


> Каждую деталь сцены нужно будет писать 2 раза и по разному?

При грамотной организации сцены писать приходится не так уж и много. Делается некий фреймворк, в котором наличествуют все необходимые тебе функции. Реализация этих функций производится несколько раз. Например 2 - для DX и OGL. А дальше ты работваешь уже только с этим фреймворком, не затрагивая функций одного из АПИ.
Такой же подход применяется для кроспрлатформенных движков.


> PS: Исходников у меня нет...

Интернет же есть - скачай!


Ricks   (2005-11-30 11:14:00) [5]

То есть, приходиться писать отрисовку как для D3D, так и для OpenGL?
Каждую деталь сцены нужно будет писать 2 раза и по разному?

PS: Исходников у меня нет...


_3d[Power]   (2005-11-30 09:38:00) [6]

Посмотри исходники quake2, там это очень наглядно (software \ opengl)


Sphinx   (2005-11-30 07:47:00) [7]

что-то типа этого:
TRender = class
 ...
 function Render: Integer; virtual;
 ...
end;

TD3DRender = class
 ...
 function Render: Integer; override;
 ...
end;

TOGLRender = class
 ...
 function Render: Integer; override;
 ...
end;
...
var
 Render : TRender;
...
if Run = RunOGL then
 Render := TOGLRender.Create;
else
 Render := TD3DRender.Create;
...
 Render.Render;


Наверх

Титульная страница Поиск, карта сайта Написать письмо