Firemonkey - использовать HD или 3D?

Просто немного поиграл с FireMonkey.

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

Если я создаю 3D-приложение, когда я добавляю кнопки/заметки в форму, они не отображаются.

Это XE2 под управлением Windows 7 под управлением VMWare Fusion (с включенной 3D-графикой).

Есть ли какая-то причина для приложения использовать форму HD, если оно не для графики/игр, а просто «бизнес»-приложение с кнопками/редактированием/заметками?

В чем разница между ними и почему это важно? Чтение Delphi XE2: почему приложения FireMonkey HD? не помогло. .


person Wizzard    schedule 24.09.2011    source источник
comment
If I create a 3D application, when I add buttons/memo to the form they don't show up. Я тоже хотел бы это знать.   -  person Johan    schedule 24.09.2011
comment
Трехмерной сцене нужен источник света, иначе ничего не видно.   -  person Ondrej Kelle    schedule 24.09.2011
comment
@Johan (и @Wizzard), используйте TLayer3D для добавления 2D-контента в 3D-приложение. Используйте TViewport3D для добавления 3D-контента в 2D-приложение. См. раздел docwiki.embarcadero.com/RADStudio/en/FireMonkey_3D (раздел "Смешивание 2D и 3D"). )   -  person Mike Sutton    schedule 24.09.2011
comment
Вы можете просмотреть демо из этой папки.. , много интересных демок/скриптов!   -  person Whiler    schedule 24.09.2011


Ответы (3)


HD (или, по-моему, лучше: 2D) и 3D-приложения служат разным целям.

HD-приложения более или менее похожи на известные нам приложения с графическим интерфейсом, за исключением того, что графика очень гибкая, ее можно анимировать и т. д. Ее можно использовать для «бизнес-приложений», а также для большинства других целей используется графический интерфейс.

3D-приложения показывают двухмерный вид трехмерного мира. Они имеют дело с кубами, сферами, сетками и т. д. и служат только для целей трехмерной графики. С его помощью вы можете создавать красивую анимацию или интерактивные приложения, но не обязательно «бизнес-приложения», как мы их знаем.

Можно использовать 2D (HD) элементы в 3D, но это требует немного больше работы. Я не исследовал это много времени, но они должны быть помещены на что-то плоское в трехмерном пространстве, насколько мне известно. Форма больше не рассматривается как плоское пространство, поэтому вы не можете просто поместить кнопку на форму. Вы размещаете фигуры в пространстве, вы должны их освещать и т. д.

Как сказал Роберт Лав в ответе SO, на который вы ссылались, FireMonkey может делать больше, чем просто красивые традиционные пользовательские интерфейсы HD. Он использует возможности графического процессора более чем одним способом.

person Rudy Velthuis    schedule 24.09.2011

Насколько я знаю, HD-приложения могут управлять 3D-объектами, анимацией и т. д. Если вы планируете создать «бизнес-приложение», вам следует выбрать HD.

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


Мировой тур Source XE2

person Whiler    schedule 24.09.2011
comment
В Кёльне я видел демонстрацию DavidI (написанную Андерсом Олссоном, IIRC), где были 2D-объекты, среди которых сетка, по бокам вращающегося 3D-куба. Давид, я мог, приложив некоторые усилия, даже редактировать записи в сетке во время вращения куба. Совершенно бесполезное, но веселое зрелище и демонстрация возможностей FireMonkey. <г> - person Rudy Velthuis; 24.09.2011
comment
@Rudy, у тебя случайно нет видео-ссылки на эту демонстрацию, не так ли? - person Johan; 24.09.2011
comment
@Johan: Извините, нет. Я был там, но не знаю, снимал ли это кто-нибудь. Было довольно забавно видеть, как DavdiI редактирует запись сетки на вращающемся кубе, который также отображает некоторые факты о рыбе. Бесполезно, но очень интересно. - person Rudy Velthuis; 25.09.2011

Вы можете использовать HD-приложение, которое вы можете использовать для кнопки, и многие объекты для вашего приложения. Если вы хотите добавить 3D-объект только для анимации, попробуйте использовать TViewport3D, который можно использовать как контейнер для 3D-объекта.

person Tomi Sayugo    schedule 17.12.2011