Python pyopengl:它能取代c++;?

Python pyopengl:它能取代c++;?,python,c++,opengl,3d,pyopengl,Python,C++,Opengl,3d,Pyopengl,我要开始一门计算机图形学课程,我必须选择一门语言 < >是C++与Python之间的选择。我对C++没有问题,Python是一个正在进行中的工作。所以我想沿着python的道路走下去,使用pyopengl作为图形部分 不过,我听说,性能是个问题 Python/PyopGunl成熟到足以挑战C++的性能吗? 我意识到这是一个很长的尝试,但是我想听听您对pyopungl的使用的想法和经验。 < Python是一个动态的语言,它在运行时被解释和编译,因此不能有更好的性能,然后C++来查看几种编程语言

我要开始一门计算机图形学课程,我必须选择一门语言

< >是C++与Python之间的选择。我对C++没有问题,Python是一个正在进行中的工作。所以我想沿着python的道路走下去,使用pyopengl作为图形部分

不过,我听说,性能是个问题

Python/PyopGunl成熟到足以挑战C++的性能吗?


我意识到这是一个很长的尝试,但是我想听听您对pyopungl的使用的想法和经验。

< Python是一个动态的语言,它在运行时被解释和编译,因此不能有更好的性能,然后C++来查看几种编程语言之间的比较。

另一个更喜欢C++的理由是并行执行。CG中的许多任务可以通过将它们拆分为并行运行的多个线程来优化-是否尝试过使用Python启动新线程?

Python是一种很棒的语言,但它不是用于图形的正确工具。如果你想做任何远程高级的事情,你必须使用非Python库,最终会得到用Python编写的丑陋的C代码。

这在很大程度上取决于你的计算机图形学课程的内容。如果你在做我以前教过的入门课程,基本上就是旋转立方体和球体,一些纹理贴图和一些顶点动画,就是这样。在这种情况下,假设您可以绕过非Python(老实说,还有un-C++)OpenGL状态机范式,那么Python就足够了

对于像做矩阵数学这样的事情,你可以使用Numpy,它的核心是用C写的,速度非常快。您将更快地启动和运行,更快地迭代,并且很可能会有更多的乐趣

<>如果你正在做一些硬核,锐利的,每一个场景的百万个三角形的动画动画计算机图形学课程,坚持C++ + < /P> 如果你的类给了你选择的机会,那么你可以放心地打赌Python会好起来


如果你想把你的知识运用到计算机图形学的实际工作中,几乎每一个游戏和图形引擎都是用C++或C++编写的,而Python(或Lua)则是作为脚本语言。

< P>这是我个人的经验:

当我第一次听说PyOpenGL时,我非常激动。我最喜欢的语言是OpenGL?处理所以我开始自学3D图形编程

我看了好几本教程和书,比如和。因为它们与OpenGL本身的相同(只有很小的区别),所以复制大多数示例并不困难。此外,NeHe还有许多其他人用Python编写的源代码

没过多久(大约两周),我就阅读了四元数并自己用Python实现了它。现在我有了一个支持GLSL的环境,具有完整的3D相机交互选项。我制作了一个简单的Phong着色器,并使用四元数来驱动相机旋转。我还没有一次演出成功

几个月后,我回到了这个代码

我尝试了一个Python八叉树实现,当我达到8个级别(256x256x256体素)时,计算需要超过2G的RAM,几分钟后,仍然没有完成。我意识到当你在Python中存储很多对象时,它不仅仅是C++中的简单结构。这就是我意识到我需要把这个因素分解出来,用C++写的,然后用Python调用将它粘回。p> 一旦我完成了,如果我记得的话,我会告诉你最新情况


(回答你的问题,不,Python永远不会取代C++。这两个LANGO有不同的用途,不同的强度。)< P> > Python是我们要走的路。由于所有opengl编程都是将数据上传到显卡RAM,然后使用opengl对其进行操作,因此python中的速度限制是没有意义的。此外,它使C++中的硬事物容易打开文件、图像、声音等。 对于上面实现八叉树的人,没有任何东西可以阻止您使用用C编写的numpy来实现它。(还要确保您使用的是类似于二叉树的线性内存,而不是指向链接式结构中的对象的指针)


这正是一位朋友告诉我的,相同的单词,不同的语言。这就是为什么当遇到疑问时,你会编写自己的库。谢谢,我欣赏真实世界的计算机图形paragraph@phkahler-你是什么意思?我想phkahler的意思是你非常非常正确,以至于他无法用语言来解释泽维尔。是的,这是一个很好的答案,很明显我无法清楚地表达这个想法:-)你能用“曾经尝试过使用Python启动一个新线程”来精确地表达你的意思吗?线程在Python中很容易启动。:)你是说CPython的线程受到全局解释器锁的影响吗?事实上,我从来没有用Python进行多线程开发,但我看到了很多反对ITA的帖子。随着计算机性能的提高,动态语言最终可能变得有用,甚至对于高性能游戏也是如此,计算机的能力应该总是比程序员更不值钱,当计算机发展到足够的程度时,使用Python来做现在只能在C++中完成的事情是有意义的,当然在机器上运行的速度不会更快,但是开发时间会是…将有一个范式转变,所以现在甚至不可能在C++中完成,现在所做的一切都可以用Python语言这样的方式完成。当然,在机器上运行的速度不会更快,在Python中做了一个大的八叉树作为一系列的NUMPY操作。Numpy简直是疯了,我已经习惯了这样一种想法:一想到用C语言尝试它,就让我畏缩的东西可以用几行Python来完成。Numpy在大数据处理方面也做了同样的事情。这不是Python是否足够成熟,只是计算机性能的问题,计算机的性能水平还没有达到