编程语言/库如何与硬件通信?

时间:2011-09-13 04:38:08

标签: c# c++ api windows-phone-7 programming-languages

所以我在研究是否有办法解决微软为Windows Phone 7设置的XNA / Silverlight锁定问题,因为我可以使用SFML(.net绑定)进行应用程序开发和其他库我已经知道了。
我找不到.....

现在我想知道为什么Windows手机和其他类似设备不允许使用某些语言和OpenGL等非托管库,特别是因为我刚刚发现了平台调用/外部链接/其他双语技巧。

要理解这一点,我想我需要理解语言和机器硬件之间的关系:像OpenGL这样的c / c ++库如何与屏幕/图形卡通信?

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

2 个答案:

答案 0 :(得分:3)

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

OpenGL / DirectX / XNA封装了所有操作系统的系统API,并为其上的所有程序提供了一个简单易用的界面。

如下所示:

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

希望这有用:)

杰森

答案 1 :(得分: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制造商的收入,因为有些人要求您购买开发软件和/或开发许可证来编写软件。
  5. 我对这些中的任何一个都不是特别兴奋,但他们只是浮现在脑海中。