Python中常用的图形交互程序制作库及其对比


Python中常用的图形交互程序制作库及其对比

一、底层框架

(1)OpenGL

  • OpenGL是由SGI公司1992年7月发布,是一款基于桌面操作系统、功能强大、调用方便的底层 3D图形库 。 它是 与硬件无关的软件接口 , 可以在windows/Linux/Unix 之间移植。
  • OpenGL主要是为了实现3D特效而来,系统需要这样的特性时,目前是有XGL这样的东西将X的需求交给OPENGL来渲染,最终输出,所以要渲染全景视频就要用到OpenGL。

(2)OpenGL ES(EGL)

  • 针对嵌入式设备图形开发的标准 OpenGL ES, 是 OpenGL的一个子集。 OpenGL ES是一种独立的平台无关的三维图形开发库,在各种语言下进行主框架开发并结合应用,使用OpenGL ES函数可以开发出三维游戏。

(3)SDL

  • SDL(Simple DirectMedia Layer)旨在通过OpenGL和Direct3D提供对音频,键盘,鼠标,操纵杆和图形硬件的低级访问。
  • 开源协议:GNU

(4)DirectX

  • DirectX(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft
    Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX
    ONE电子游戏开发,并且只能支持这些平台。
    DirectX是为了与OpenGL竞争而推出的。

二、底层框架的区别

(1)OpenGL和DirectX的区别

  • 在技术方面,OpenGL具有较强的可移植性,而DirectX只能用于
    windows操作系统,它是基于windows操作系统平台的应用程序接口。OpenGL只是图形函数库,是专业的3D程序接口,OpenGL被设计为只有输出,因此只提供渲染功能。核心API没有窗口系统,音频,打印等其他输入设备的概念。也正是因为这样的设计,允许它渲染的代码完全独立于运行的操作系统,允许跨平台开发。
  • DirectX是微软公司开发的用途广泛的API,它提供了一整套多媒体接口方案,尤其在3D图形方面的表现突出。
  • 在硬件通信方面,DirectX是程序能够轻松确定计算机的硬件性能,然后设置与之匹配的程序参数。该程序使得多媒体软件程序能够在基于windows的具有DirectX兼容硬件与驱动程序的计算机上运行,同时确保多媒体程序能够充分急用高性能硬件。
  • OpenGL是一个与硬件无关的软件接口,可在任何平台上运行,与DirectX能设置与硬件匹配的程序参数相比,要逊色一些。目前,硬件开发商正在加强对它的支持。
  • 在应用方面,在专业高端绘图领域,OpenGL仍然是不能被取代的主角,在包含CAD,内容创作,能源,娱乐,游戏开发,及虚拟现实等行业领域中,OpenGL得到广泛的应用。DirectX适合于多媒体,娱乐,及时3D动画等广泛和实用的3D图形计算,在基于windows平台上的游戏开发中,它占领了大部分的市场。

(2)SDL与OpenGL的区别

  • SDL是一个主要处理2D的,可能在处理3D一些的时候使用OpenGL,所以它加入了OpenGL的支持,不能算是SDL内置了OpenGL,只能说是SDL内部加入了接口封装了OPENGL,你可以使用也可以不使用。
  • SDL使用OpenGL作为需要在某些平台上进行硬件渲染的内容的硬件渲染器。 如果您拥有这样的平台,则OpenGL是底层的API,SDL是其基础。SDL处理输入,窗口创建,图像加载以及OpenGL无法处理的其他一些功能。
  • 关于旋转图形的示例:使用OpenGL(即硬件加速)比使用SDL本身(即在CPU上)更好,因为它通常是计算密集型的(特别是如果您有很多位图来旋转每一帧, 您希望效果平滑)。现在很多游戏里面,都采用 SDL+OpenGL ES 的模式来绘制3D界面。 可以让SDL使用OpenGL ES的函数接口来渲染3D。
  • SDL 做的工作就是用X11创建窗口,用EGL创建Surface并绑定,最后就可以用OpenGL或者GLES去render。SDL下的Direct3D, OpenGL, gdi是同类型的,用于render。

三、常用开发Python库

(1)pyopengl

  • 主要用途:二维图形开发、三维图形开发
  • 简要介绍:顾名思义,基于OpenGL开发,调用OpenGL实现图形交互功能。
    PyOpenGL是OpenGL的python封装。
    用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口,由美国硅图公司(SGI)于1992年6月30日发布。该接口通常用于与图形处理单元交互,以实现硬件加速。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。
  • 开源协议:不清楚

(2)pyglet

  • 主要用途:二维游戏开发
  • 简要介绍:跨平台的Python窗口和多媒体库,用于开发游戏和其他视觉丰富的应用程序。它支持窗口化,用户界面事件处理,操纵杆,OpenGL图形,加载图像和视频以及播放声音和音乐。pyglet适用于Windows,OS X和Linux。
  • 优势:对于2D游戏,pyglet更简介。因为不需要编写游戏循环,不用担心速度,时间和响应速度。Pyglet是一个框架,已经有了mainloop,不能改变mainloop,看不到mainloop是如何工作的。
  • 开源协议:BSD

(3)pygame

  • 主要用途:二维游戏开发
  • 简要介绍:基于SDL开发,可以运行在许多平台和操作系统上。通过使用pygame模块,可以控制游戏的逻辑和图形,而无需担心处理视频和音频所需的后端复杂性。
  • 开源协议:GNU

(4)Panda3D

  • 主要用途:三维游戏开发
  • 简要介绍:一个3D渲染和游戏开发库需要调用OpenGL,底层使用C++实现。
  • 开源协议:FreeBSD,即便是将制作的游戏商业化也是不需要支付费用的。

(5)Ursina

  • 主要用途:三维游戏开发
  • 简要介绍:基于Python和Panda3D实现,比Panda3D更容易使用,适合新学者。
  • 开源协议:MIT,可以自由地将 Ursina 用于商业和非商业项目
  • 特性:
    基于 Python 的游戏开发框架,用于创建和展示 2D 和 3D 游戏。
    基于Panda3D实现,适合新学者。
    支持使用 3D 建模软件(如 Blender)创建和导入模型。
    具有跨平台的特性,可以在 Windows、Mac 和 Linux 上运行。
  • 网址:ursina engine

参考:

FFmpeg与OpenGL与SDL

OpenGL和DirectX


文章作者: BITBCI
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BITBCI !
  目录