Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python编写的3D OpenGL游戏看起来不错,运行速度快吗?_Python_Opengl - Fatal编程技术网

用Python编写的3D OpenGL游戏看起来不错,运行速度快吗?

用Python编写的3D OpenGL游戏看起来不错,运行速度快吗?,python,opengl,Python,Opengl,我计划使用jMonkeyEngine用Java编写一个简单的3d(等轴测视图)游戏-没什么好想象的,我只是想学习一些关于OpenGL和编写高效算法(随机地图生成算法)的知识 当我计划做什么的时候,我开始考虑切换到Python。我知道Python的出现并不是为了成为一种编写3d游戏的工具,但是有可能用这种语言编写好看的游戏吗 我心目中的三维图形,良好的效果和免费的CPU时间,以权力的游戏引擎的其余部分?我看过好看的java游戏——老实说,当我看到Runescape HD达到的细节水平时,我相当震惊

我计划使用jMonkeyEngine用Java编写一个简单的3d(等轴测视图)游戏-没什么好想象的,我只是想学习一些关于OpenGL和编写高效算法(随机地图生成算法)的知识

当我计划做什么的时候,我开始考虑切换到Python。我知道Python的出现并不是为了成为一种编写3d游戏的工具,但是有可能用这种语言编写好看的游戏吗

我心目中的三维图形,良好的效果和免费的CPU时间,以权力的游戏引擎的其余部分?我看过好看的java游戏——老实说,当我看到Runescape HD达到的细节水平时,我相当震惊

另一方面,pygame.org只有2d游戏,有些是3d项目。python有没有高效的3d游戏引擎?pyopengl是唯一的选择吗?python中好看的游戏不受欢迎,也不可能实现


如果您担心3D性能,我将非常感谢您提供的任何信息/反馈。

如果您担心3D性能:大多数性能关键部分将由OpenGL处理(在C库中,甚至在硬件中),因此您用来驱动3D的语言应该不会太重要

要真正了解性能是否存在问题,您必须尝试一下。但没有理由认为它在原则上不起作用


无论如何,您仍然可以优化关键部分,可以使用Python,也可以使用C。对于大多数性能不太关键的游戏引擎,您仍然可以获得Python的好处。

您可能想查看一下。我只是自己搞砸了,没什么大不了的,但看起来不错

也许有点离题,但如果您的目标是学习Python,那么使用and创建一个游戏怎么样?XNA虽然不是OpenGL,但我发现它是一个非常简单的2D/3D引擎,速度很快,支持Shader Model 3.0。

查看该项目——一个开源的吉他英雄替代品。它是用Python编写的,在OpenGL中有不错的3D图形。我建议你去看看关于图书馆等的提示。

是的。伊芙在线就是这么做的


我建议使用与pygame类似的系统,但与OpenGL完全绑定。您可以从简单的2D游戏开始,了解系统的窍门,然后再进行3D游戏。这是一个比PyGame更现代的系统,PyGame是围绕SDL构建的,SDL本身现在有点长。

几年前有一款吸血鬼游戏,其中大部分(如果不是全部的话)代码都是用Python编写的。不确定3D例程是否在其中,但它工作得很好。

我在EuroPython上做了一次演讲,讲述了我的业余爱好者尝试从Python驱动OpenGL的情况:

我所说的代码的最新版本如下:

它被称为“库”,但我太天真了:这是一堆个人实验代码

然而,它演示了可以从Python以60fps的速度移动数百位几何体

尽管上面的演示非常简单,因为它只使用了几何体和未加纹理的面,但我发现更详细的几何体、纹理贴图或其他更现代的图形效果并不会对帧率产生实质性影响。或者至少它们不会比在C程序中使用相同的效果更糟糕。这些都是在GPU上运行的,因此,如果您的程序是用Python编写的,则不会有任何区别

Python对性能敏感的一点是,如果您在CPU端创建动态几何体,例如,通过弯曲或熔化形状来移动形状内的各个顶点。在Python中进行这种逐顶点计算,然后根据结果构建一个新的ctypes数组,然后将此几何体分流到GPU,每一帧都会很慢。相反,您可能应该在顶点着色器中执行此操作


另一方面,如果您只需要仿射变换(移动对象、旋转对象、打开抽屉柜、旋转车轮、弯曲有关节的机器人手臂)然后所有这些都可以由GPU来完成,而你的程序用Python编写的事实对性能没有什么差别。

但是值得注意的是,EVE中的大部分是用C++实现的。但是它是由Python结合在一起的。我一直在考虑在PC上为WiiTanks做一个重写,并且一直在玩弄PyGame。。。但是食人魔看起来很有前途-非常感谢链接@JonCage你用Python写过这个吗?我有一些基础知识,但没有什么值得发布的。这里是一些你应该检查的模块,用它们代替PyOpenGL。简单快速,无需C类型。它不是一个游戏引擎,而是以Python的方式访问OpenGL。