我想开始学习 OpenGL,但我真的不想学习另一种语言来做到这一点。我已经非常精通 python 并且喜欢这种语言。我只想知道它与常规 api 有多接近?我是否能够轻松地遵循教程和书籍而没有太多麻烦?
我知道 C++ 提供了更好的性能,但是仅仅为了学习,我会在 PyOpenGL 上出错吗?
需要注意的是我自己很少进行 OpenGL 编程,我相信出于学习的目的,PyOpenGL 是一个不错的选择。主要原因是 PyOpenGL 与大多数其他 OpenGL 包装器一样,只是:围绕 OpenGL API 的一个薄包装器。
PyOpenGL 的一大好处是,虽然在 C 语言中您必须担心调用正确的glVertex3{dfiX}
命令,但 Python 允许您只编写glVertex3(x,y,z)
代码而不用担心告诉 Python 您传入的参数类型。这听起来可能没什么大不了的,但它是使用 Python 的鸭子类型通常要简单得多,而不是过度关注静态类型。
OpenGL 方法几乎全部封装在 Python 方法中,因此当您使用 Python 编写代码时,您将使用的算法和方法调用与使用任何其他语言编写 OpenGL 相同。但是,由于您是用 Python 编写的,因此在正确使用指针、内存管理等方面犯“愚蠢”错误的机会将大大减少,如果您要研究 C 或 C++ 中的 API,那只会占用您的时间, 例如。
PyOpenGL
我不认为这是一个好的选择。在我看来在 C/C++ 中,使用 OpenGL 代码更容易 - 从简单的应用程序开始,然后添加着色器,然后添加一些几何函数,制作纹理/几何生成器,通过 CSG 构建场景等。你知道 - 拥有有趣,玩代码,实验并在过程中学习一些东西。老实说,我只是没有看到自己在 python 中这样做。当然可以在 Python 中进行 OpenGL 编程,但我认为没有理由实际这样做。加上几个 OpenGL 函数将内存指针作为参数,虽然可能有一个类(或十几个替代方案)用于这种情况,但当 C/C++ 中提供传统的做事方式时,我认为没有理由使用它们,特别是当我考虑到 python 代码用于将向量或数组传递给 OpenGL 函数的包装器数量时。看起来就像在没有真正理由的情况下让事情变得更加复杂。此外,性能会明显下降,尤其是当您使用“RAW”OpenGL 时。
此外,如果您要制作游戏,您很可能必须使用 C++ 或其他“非 Python”语言。
PS 我已经完成了足够多的 OpenGL 编程,大量 DirectX 编程,但我专注于 C++,并且仅将 python 用于某些算法测试、工具和脚本。