代码之家  ›  专栏  ›  技术社区  ›  Tom

Piopunl:它能取代C++吗?

  •  13
  • Tom  · 技术社区  · 6 年前

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

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

    不过,我听说那场演出是个问题。

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

    我知道这是一个漫长的过程,但是我想听听你对pyopengl使用的想法和经验。

    提前谢谢。

    5 回复  |  直到 14 年前
        1
  •  25
  •   kibibu    15 年前

    这在很大程度上取决于你的计算机图形学课程的内容。如果你想学我以前教过的入门课程,基本上就是旋转立方体和球体,一些纹理贴图和一些顶点动画,就这样。在这种情况下,python将是完全足够的,假设您可以绕过不符合pythonic(老实说,是un-c++)的opengl状态机范式。

    对于做矩阵数学之类的事情,你可以使用numpy,它的核心是用c编写的,而且非常快。你会跑得更快,迭代速度更快,更有可能获得更多乐趣。

    然而,如果你正在做一些硬核、尖端、数百万个三角形的每一个场景动画动画计算机图形课程,坚持C++。

    如果您的类已经给了您选择,那么可以肯定python会没事的。

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

        2
  •  5
  •   bill    14 年前

    巨蟒是一条路。由于所有opengl编程都是将数据上传到显卡ram,然后使用opengl对其进行操作,因此python中的速度限制是没有意义的。它也使得C++中的硬事物容易打开文件、图像、声音等。

    至于上面提到的实现八叉树的人,没有什么可以阻止您使用用c编写的numpy来实现它。(还要确保使用的是线性内存,如二叉树,而不是指向链接结构中的对象的指针)

    Blog post on this subject

        3
  •  4
  •   Xavier Ho    15 年前

    以下是我的个人经历:

    当我第一次听说pyopengl的时候 激动的 . 我最喜欢的语言是opengl?处理!所以我开始自学三维图形编程。

    我看了几本教程和书,比如 NeHe 以及 OpenGL SuperBible . 因为 PyOpenGL's functions 与opengl本身相同(差别很小),复制大多数示例并不困难。此外,nehe还有许多其他人用python编写的源代码。

    在我阅读了四元数并用python实现之后不久(大约两周)。现在,我有一个支持glsl的环境,其中包含完整的3d相机交互选项。我制作了一个简单的phong着色器,并使用四元数驱动我的相机旋转。我还没有一个表演成功。

    几个月后,我又回到了这个密码。

    我尝试了一个python八叉树实现,当我进入8个级别(256x256x256体素)时,需要超过2g的ram来计算,几分钟后,仍然没有完成。我意识到当你在Python中存储很多对象时,它不仅仅是C++中的简单结构。这就是我意识到我需要把这个因素分解出来的,用C++写这个,然后用Python调用把它粘合起来。

    一旦我搞定了,如果我记得的话,我会更新你的。;

    (回答你的问题,不,Python永远不会取代C++。这两种语言有着不同的目的和优势。)

        4
  •  2
  •   Max Shawabkeh    15 年前

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

        5
  •  0
  •   Dror Helper    15 年前

    Python是一种动态语言,在运行时得到解释和编译,因此不能有更好的性能。 this post 用于比较几种编程语言。

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