pyopengl: es Könnte ersetzen Sie c++?
Fange ich in einer computer-Grafik natürlich, und ich habe eine Sprache wählen.
Entscheidungen zwischen C++ und Python. Ich habe kein problem mit C++, python ist ein work in progress. So war ich denken, sich für die python-Weg, mit pyopengl für die graphics-Teil.
Ich habe gehört, Sie jedoch, dass performance ein Thema ist.
Python /pyopengl reif genug, um die Herausforderung C++ auf die performance?
Merke ich its a long shot, aber ich würde gerne hören, Ihre Gedanken, Erfahrungen über die Verwendung von pyopengl.
Vielen Dank im Voraus.
- seinem nicht, ob Python ist reif genug, es ist nur eine Frage der Leistung des Computers, Computer, die nicht zu den performance-level noch nicht, wo Sie es sich leisten können, um Abfälle, die zusätzliche Zyklen, die python verwendet im Vergleich zu c++, das wird sich ändern, aber irgendwann als es zwangsläufig tut (mit computer-Geschwindigkeiten steigt von Jahr zu Jahr).. eine Sprache wie c++ würde immer verwendet werden, ich denke, für die cutting edge der Wissenschaft, etc., wo Sie versuchen, verwenden Sie jeden letzten bit von computing-Ressourcen, aber für die meisten Anwendungen höhere Programmiersprachen würde schließlich übernehmen, wie Sie im Laufe der Geschichte so weit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt sehr VIEL auf die Inhalte Ihrer computer-Grafiken natürlich. Wenn Sie etwas zu tun, wie der Schnupperkurs, die ich gelernt habe in der Vergangenheit, es ist im Grunde drehenden Würfel und Kugeln, einige textur-mapping und einige vertex-animation, und die ist über es. In diesem Fall, Python wäre vollkommen ausreichend, vorausgesetzt, Sie können rund um die Unpythonic (und, um ehrlich zu sein, un-C++) OpenGL-state-machine-Paradigma.
Für Dinge tun, wie Sie Ihre matrix Mathematik, die Sie verwenden können, Numpy, der Kern ist in C geschrieben und ist wirklich sehr schnell. Sie werden eingerichtet sein und schneller laufen, Durchlaufen, schneller und wahrscheinlich mehr Spaß haben.
Wenn, jedoch, Sie tun einige hardcore -, Schneide -, Millionen-von-Dreiecke pro Szene-skinned-animiert-alles-computer-Grafik-natürlich-stick mit C++.
Wenn Ihre Klasse hat Sie die Wahl, ist es wahrscheinlich eine sichere Wette, dass Python wird ok sein.
Wenn Sie wollen, nutzen Sie Ihre Kenntnisse in einem echten job in der computer Graphik, obwohl, so ziemlich jedes Spiel und Grafik-engine, geschrieben in C oder C++ und Python (oder Lua) ist Links als Skriptsprache.
Python ist der Weg zu gehen. Da alle opengl-Programmierung ist das hochladen von Daten auf die Grafikkarte, RAM, und dann mit opengl zu arbeiten, werden die Geschwindigkeitsbegrenzungen in python sind umstritten. Auch das macht die harte Dinge, die in C++ einfach den ie öffnen von Dateien, Bildern, sounds etc.
Als für die person über die Implementierung von octrees, es gibt nichts stoppen Sie von der Verwendung von numpy, das ist in C geschrieben, von der Umsetzung. (auch stellen Sie sicher, Sie sind mit linearen Gedächtnis wie ein binärer Baum, und keine Zeiger auf Objekte einer link-Struktur)
Blog-post zu diesem Thema
Hier meine persönliche Erfahrung:
Als ich zum ersten mal von PyOpenGL, war ich absolut begeistert. OpenGL in meiner Lieblings Sprache? Angebot! Also habe ich angefangen zu lernen, 3D-Grafik Programmierung von mir.
Ich ging durch mehrere tutorials und Bücher wie NeHe und die OpenGL SuperBible. Da PyOpenGL Funktionen sind identisch mit der OpenGL selbst ist (mit sehr geringfügigen unterschieden), war es nicht schwer zu replizieren die meisten Beispiele. Außerdem NeHe hat viele source-code in Python, das die anderen gemacht.
Es war nicht allzu lange nach dem (2 Wochen) lese ich bis auf Quaternionen und implementiert in Python selber. Jetzt habe ich eine GLSL-fähigen Umgebung mit voller 3D-Kamera Interaktionsmöglichkeiten. Habe ich ein einfaches Phong-shader, und verwendet Quaternionen zu fahren, meine Kamera Rotationen. Ich habe nicht eine einzige Leistung Treffer, doch.
Monate später, kam ich zurück zu diesem code.
Ich versucht, eine Python-Octree-Implementierung, und wenn ich ging zu 8 Ebenen (256x256x256 Voxel-Sculpting), dauerte es mehr als 2GB RAM zu berechnen und Minuten nach, es ist noch nicht fertig. Ich realisierte, dass, wenn Sie speichern viele Objekte in Python, es ist nicht nur ein einfaches struct wie in C++. Das ist, wo ich merkte, ich muss zu einem Faktor aus, schreiben Sie in C++, und dann kleben Sie es wieder mit einem Python-aufrufen.
Sobald ich damit fertig bin, wenn ich mich daran erinnere, werde ich Sie aktualisieren. ;]
(Um deine Frage zu beantworten, Nein, Python wird nie ersetzen C++. Diese beiden lanaguages haben unterschiedliche Zwecke und unterschiedliche stärken.)
Python ist eine wunderbare Sprache, aber es ist nicht das richtige tool für Grafiken. Und wenn Sie wollen, etwas zu tun aus der Ferne advanced müssen Sie unpythonic Bibliotheken und wird am Ende mit hässlichen C-code in Python geschrieben.
Python ist eine dynamische Sprache, die Holen interpretiert und kompiliert zur Laufzeit und als solches kann die Leistung verbessern, dann C++ - werfen Sie einen Blick auf dieser Beitrag für den Vergleich zwischen verschiedenen Programmiersprachen.
Ein weiterer guter Grund, um lieber C++ ist die parallele Ausführung. Viele Aufgaben in der CG kann optimiert werden durch die Spaltung mehrere threads tgat parallel laufen - mal versucht einen neuen thread starten mit Python?