Después de indagar en diferentes repositorios y foros al final hemos dado con la solución que te mostraremos más adelante.
Solución:
Depende MUCHO de los contenidos de su curso de gráficos por computadora. Si estás haciendo algo como el curso introductorio que he enseñado en el pasado, básicamente se trata de hacer girar cubos y esferas, algo de mapeo de texturas y algo de animación de vértices, y eso es todo. En este caso, Python sería perfectamente adecuado, suponiendo que pueda evitar el paradigma de máquina de estado OpenGL Unpythonic (y, seamos honestos, no C++).
Para cosas como hacer tus cálculos matriciales, puedes usar Numpy, cuyo núcleo está escrito en C y es bastante rápido. Estará en funcionamiento más rápido, iterará más rápido y lo más probable es que se divierta más.
Sin embargo, si está haciendo un curso de gráficos de computadora duro, vanguardista, de millones de triángulos por escena, animados y todo, quédese con C ++.
Si su clase le ha dado la opción, probablemente sea una apuesta segura que Python estará bien.
Sin embargo, si desea aprovechar su conocimiento en un trabajo real en gráficos por computadora, casi todos los juegos y motores gráficos están escritos en C o C ++, mientras que Python (o Lua) se deja como un lenguaje de secuencias de comandos.
Python es el camino a seguir. Dado que toda la programación de opengl está cargando datos en la RAM de la tarjeta de video, luego usa opengl para operar en ella, las limitaciones de velocidad en python son discutibles. También facilita las cosas difíciles en C++, es decir, abrir archivos, imágenes, sonidos, etc.
En cuanto a la persona anterior que implementa octrees, no hay nada que le impida usar numpy, que está escrito en C, para implementarlo. (también asegúrese de que está utilizando memoria lineal como un árbol binario, y no punteros a objetos en una estructura similar a un enlace)
Publicación de blog sobre este tema
Aquí está mi experiencia personal:
Cuando escuché por primera vez sobre PyOpenGL, estaba absolutamente fascinado. ¿OpenGL en mi idioma favorito? ¡Negociar! Así que comencé a aprender programación de gráficos 3D por mi cuenta.
Revisé varios tutoriales y libros como NeHe y OpenGL SuperBible. Debido a que las funciones de PyOpenGL son idénticas a las de OpenGL (con diferencias muy pequeñas), no fue difícil replicar la mayoría de los ejemplos. Además, NeHe tiene muchos códigos fuente en Python que otros hicieron.
No pasó mucho tiempo después (alrededor de 2 semanas) leí Quaternions y lo implementé en Python yo mismo. Ahora tengo un entorno habilitado para GLSL con opciones de interacción de cámara 3D completas. Hice un sombreador Phong simple y usé Quaternions para controlar las rotaciones de mi cámara. Todavía no tengo un solo éxito de rendimiento.
Meses después, volví a este código.
Intenté una implementación de Python Octree, y cuando pasé a 8 niveles (256x256x256 vóxeles), tomó más de 2G de RAM para calcular y minutos después, todavía no está listo. Me di cuenta de que cuando almacenas muchos objetos en Python, no es solo una estructura simple como en C++. Ahí es donde me di cuenta de que necesito factorizar esto, escribirlo en C++ y luego pegarlo con una llamada de Python.
Una vez que termine con esto, si recuerdo, te actualizaré. ;]
(Para responder a su pregunta, no, Python nunca reemplazará a C ++. Esos dos lenguajes tienen diferentes propósitos y diferentes fortalezas).
No se te olvide comunicar esta crónica si te fue útil.