2011-09-13 26 views
5

所以我正在研究是否有任何方法可以解决微软为Windows Phone 7设置的XNA/Silverlight锁定问题,或许我可以将SFML(.net绑定)用于应用程序开发和其他库,已经知道了。
我没有发现.....编程语言/库如何与硬件通信?

现在我想知道就是为什么在Windows Phone和其他类似设备不允许使用一些语言和非托管库,如OpenGL的,尤其是因为我刚刚发现了约平台调用/外部联动/其他双语技巧。

要理解这一点,我想我需要undersand语言和机器硬件之间的关系:如何像OpenGL中的C/C++库同屏/显卡的沟通?

奖励问题: XNA不使用OpenGL/DirectX,所以它是一个完全独立的图形API?

+0

XNA是DirectX的托管包装器! http://en.wikipedia.org/wiki/DirectX –

+0

每个视频制造商(AMD/NVidia/Intel)提供者*他们自己的* OpenGL驱动程序,并且被编码为为他们的硬件做适当的低级别位(twordling)这就是[大多数]驱动程序作为内核的一部分运行的原因)。这一层可以用多种方式包装 - 但这是它如何工作的“核心”。 – 2011-09-13 04:45:46

+0

@pst:所以windows手机没有OpenGL支持驱动程序?内核是什么? – Griffin

回答

3

操作系统使用相同的API封装所有硬件。在OS内部,它使用硬件io地址来控制它。

而OpenGL/DirectX/XNA将所有操作系统的系统API封装到一个简单易用的界面上,以便它的所有程序。

就像如下:

Hardware <- HAL <- DirectX/OpenGL <- XNA <- Your Program 

希望这会有所帮助:)

杰森

+0

感谢贾森,但什么是HAL?这是否意味着像Windows这样的操作系统使用其他供应商的硬件和他们的API来沟通/控制硬件,而只是简单地将所有的命令以一种整洁/易用的方式组织起来? – Griffin

+0

HAL是硬件抽象层(维基百科...)操作系统供应商创建每个供应商需要创建的具体方法。当操作系统调用该方法时,供应商会让硬件执行任何方法。 –

+0

“HAL是硬件抽象层”:) –

3

的延长管道会是什么样子:

Hardware <- Vendor Drivers <- HAL (Operating System) <- OS Native Methods (DirectX/OpenGL) <- Managed Wrappers (XNA/.Net Frameworks/Java) <- Your Program 

有几个不同的原因供应商锁定设备。

  1. 锁定的设备往往有较少的技术问题,而Verizon等不想修复Apple/Microsoft/Google/Motorola/Blackberry软件问题。
  2. 锁定的设备可能(并不总是)更安全,因为第三方写入不好的驱动程序/软件的可能性较小。
  3. OpenGL初始/当前设计在移动平台上运行并不是很合适。
  4. 锁定的设备可以增加OS制造商的收入,因为有些设备需要您购买开发软件和/或开发许可来编写软件。

我对这些都不是特别兴奋,但他们只是想到。