Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

Мультикамерный вывод.   Найти похожие ветки 

 
MrAngel   (2004-06-09 19:09) [0]

3D MAX помните? Там есть четыре вида по умолчанию при открытии приложения.
По сути дела документ открыт как одна сцена, есть четыре камеры (с соответствующими настройками), которые "показывают" сцену в этих четырёх окошечках.

Вопрос простой как это сделать?
Есть вариант создать для каждого окошечка IDIRECT3DDEVICE9, где можно задать HWND окошечка. Но ! Тогда нам придётся дублировать данные всей сцены, там ведь нужно вертексные и инексные буффера заного создавать. По моему эти буффера использовать из первого созданного IDIRECT3DDEVICE9 нельзя. Следовательно нам нужно будет не мерено памяти для такого способа.

Есть вариант "каким то образом" подменивать HWND, куда будет выводиться картинка, во время рендера всей сцены. Но как ?

Есть какие-нибудь идеи ?


 
Darthman ©   (2004-06-09 21:19) [1]

В OpenGL через GLViewPorts делается.


 
MrAngel   (2004-06-09 23:49) [2]

Не тут дело с директом связано. Но помоему я уже разобрался - надо IDirect3DSurface9 использовать.


 
MrAngel   (2004-06-11 00:55) [3]

Нда - не тут то было.

Есть IDIRECT3DDEVICE9.CreateRenderTarget - создаёт IDirect3DSurface9 без проблем.

в IDirect3DSurface9.GetDC - выдаёт ошибку. По моему именно через этот метод надо указывать хЭндл.

Может у кого есть примеры как с этим работать ?


 
A22   (2004-06-11 13:51) [4]

по-моему у майкрософт к директу были примеры...
но если нет варианта через вьюпорты (просто не делал, звиняй уж, точно не скажу), то могу предложить такой вариант: создавай N текстур с указанием того, что они могут быть использованы в качестве RenderTarget, переключай на 1-й, рендерь нужный кадр, потом на 2, рендерь и т.д.
Далее делаешь N квадратов, при их создании опираешься на оконные координаты (поcмотри FVF), и выводи эти квады, используя свои рендертаргеты в качестве текстур. Вот пример как рендерить в текстуру:

LPDIRECT3DSURFACE9 pSurface;
Texture->GetSurfaceLevel( 0, &pSurface );
m_pd3dDevice->SetRenderTarget(0, pSurface);
RenderViewport1();
pSurface->Release();
m_pd3dDevice->SetRenderTarget(0, DefaultSurface);


 
NailMan ©   (2004-06-11 14:26) [5]

Был у мелкомягкого в DX SDK такой пример как что-то-такое-CULL. Там на одном экране было 2 окна - в одном был общий вид на сцену(общая камера), а второй вид "из глаз", тобишь из глаз фрустума.

Вот как раз тебе это и нужно.

Насколько я помню делалось это через Vieport-ы.

---
WBR, NailMan aka 2:5020/3337.13


 
MrAngel   (2004-06-11 20:55) [6]

Нет нет, ребята - вью порты точно не подходят. Я выяснил (наконец то) как это делается. Оказывается вообще не через IDirect3DSurface9.GetDC. Да IDirect3DSurface9 там используется, но лишь отчасти.

А нашёл я это дело вот здесь http://www.codesampler.com/dx9src.htm - под пунктом "Swap Chains". Отличный ресурс для начинающих - по крайней мере эта страница.

Спасибо за помощь anyway :)



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.029 c
1-1096276131
Sphinx
2004-09-27 13:08
2004.10.10
BITMAP in TStream


4-1094025255
Alex870
2004-09-01 11:54
2004.10.10
Командный процессор


14-1094669161
olookin
2004-09-08 22:46
2004.10.10
We are living in Amerika - Rammstein


1-1095768418
hawkins
2004-09-21 16:06
2004.10.10
Ошибка в пр-ме: ...File access denied...


14-1095903898
Думкин
2004-09-23 05:44
2004.10.10
С днем рождения! 23 сентября





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский