1 它们都用于创建丰富的 GUI 应用程序。那么,是
他们互相竞争。
仅在一定程度上。据我所知,WPF 只能用于创建基于 Windows 的应用程序。 Flex 最初的主要目标是 Web,大多数 Flex 应用程序都是所谓的“富 Internet 应用程序”。
后来,Adobe 创建了 AIR,这是一种虚拟机,可让您在操作系统本身上运行相同的应用程序,通常通过重用为 Web 应用程序编写的 99% 的代码。添加了一些 API 以访问操作系统的本机功能(客户端数据库、文件 I/O、运行/访问本机进程等)。 AIR 应用程序可以部署在 Windows、Mac 和 Linux 上,但针对 Linux 的 AIR vm 的开发已经停止。
这个故事的最后一步是,AIR 应用程序现在也可以打包为可以部署在移动操作系统上的应用程序。再次因为它
在 VM 中运行,这提供了“一次编写,随处部署”的解决方案。支持 Android 和 iOS(不确定 BlackBerry,但谁在乎)。在 Flex 方面,框架中添加了一些特定于移动设备的 UI 组件。
2 如果两者都用于相同的目的,那么应该首选哪一个。
选择完全取决于您,并且取决于诸如框架知识、您可能拥有的特定要求等因素。
3 另外,我还想知道WPF是基于DirectX进行渲染的,就像基于向量的渲染一样,但同时我也很想知道Flex是如何渲染的,Flex是基于什么的??
Flex 是一个编译成 ActionScript 的框架,ActionScript 又编译成 abc 字节码。该字节码将由 Flash VM 解释和运行。
Flash 的根源在于基于矢量的渲染(在过去的两个十年中,它是在网络上渲染矢量图形的解决方案)。因此,Flex UI 组件的所有库存图形都是基于矢量的。
4 Flex 是否也可以使用基于 GPU 的渲染...无论如何在 Flex 中使用 Shader。
GPU 加速已在过去 5 年的某个地方添加到 Flash/ActionScript API 中,但由于 Flex 框架早在此之前创建,并且将其移植到新的 GPU 加速系统会太复杂,因此 Flex 没有从这种演变中受益。
但是您可以将 Flex UI 与 GPU 加速组件并排使用。例如,您可以创建一个普通的 Flex 应用程序,该应用程序只包含一个渲染 3D 模型的组件,该 3D 模型位于 Flex 显示列表之外。
通常只有为 Flash VM 编写的游戏才会利用 GPU 加速。他们中的大多数使用Starling 框架。对于移动 UI,您还可以选择 FeathersUI 框架,它在 Starling 之上提供了 GPU 加速的移动组件集。
请注意,@Vinodharajan 的回答并不完全正确,因为 Flex 框架不再是 Adobe 的财产。大约两年前,Adobe 将其捐赠给了 Apache 基金会,此后一直在不断发展。