| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Direct3d и ViewPort |
| Автор: dmitry272727 19.1.2007, 13:32 |
| Подскажите пожалуйста принцип, по которому сделать следующее: В Delphi + Directx9 полноэкранная программа, в окне которой какая-то часть- это 3D а другая -это 2D(текст, картинки и т.п.). У меня есть вариант: Сделать 2 фрэйма и один сделать Direct3d, а другой DirectDraw. Насколько этот вариант работоспособен. Спасибо. |
| Автор: Kesh 19.1.2007, 14:54 |
| Все это делается в 3d. Для вывода 2d-объектов используются спрайты... Производительность не страдает... |
| Автор: Bitter 19.1.2007, 17:32 |
| Да, именно так! Используй ID3DXSprite. Могу выложить класс работы со спрайтами и класс работы с текстом (если нужно). Добавлено @ 17:32 только с использованием DirectX8 |
| Автор: dmitry272727 19.1.2007, 18:55 |
| Я как то плохо описал свою проблему. Мне нужно, что бы часть экрана использовала Direct3d, а другая НЕ ЗНАЮ какую технологию, но что бы она не перекрывала Direct3D. В случае использования ID3DXSprite, часть перекрывается. Спасибо. |
| Автор: Bitter 20.1.2007, 01:58 |
| Что-то не понятно... Direct3D в полноэкранном режиме работает? Ну сделайте две формы, в одну Direct3D (в оконном режиме) а во вторую что-то другое. Если нужен полноэкранный режим, то есть функция D3Device.SetViewport(aVP); где aVP:TD3DViewport8; заполняется так: aVP.X:=aX; aVP.Y:=aY; aVP.Width:=aW; aVP.Height:=aH; aVP.MinZ:=aMinZ; aVP.MaxZ:=aMaxZ; два последних параметра - буфер глубины (Z буффер) если нужно, чтобы объект находился всё время сзади остальных (не смотря на его координаты) - ставим aVP.MinZ:=0; aVP.MaxZ:=0; спереди aVP.MinZ:=1; aVP.MaxZ:=1; обычно принимается равным aVP.MinZ:=0; aVP.MaxZ:=1; |