Es una mala idea en la medida en que no tiene sentido. No hay nada que "configurar" que aún no haya hecho, excepto una matriz de proyección ortopédica (que deberá hacer en cualquier caso).
La portabilidad probablemente no sea un problema, aunque debería serlo. Los IHV parecen ser muy reacios a abandonar el soporte para el modo inmediato en el futuro previsible (parece "funcionar bien" incluso en los perfiles principales), por lo que aunque el modo inmediato debería haberse extinguido hace mucho tiempo, probablemente se quedará para siempre. El rendimiento es otra historia. ¿Realmente desea que algo que represente el 0.1% de la complejidad de la escena consuma el 15-20% del tiempo de la CPU? Las llamadas GL son relativamente ligeras, en comparación con, por ejemplo, DX, pero no son gratuitas, y el 15-20% de tiempo de fotograma real debido al estancamiento de la tubería? ¿Incluso puede permitirse eso con su presupuesto de tiempo? La mayoría de los juegos no pueden.
Y luego, por supuesto, las peculiaridades. Oh las peculiaridades. La aparente belleza del modo inmediato es que es (aparentemente) fácil y directo hacer algo como dibujar un par de quads rápidamente. En realidad, el modo inmediato puede ser una molestia en la parte trasera, está lleno de trampas no obvias.
Por otro lado, es igual de fácil (¡y más sencillo si me preguntas!) Solo escribir una pequeña función de 5 LOC DrawQuad
que cuando se llama agrega coordenadas e índices de vértice a un búfer de memoria e incrementa un contador. Con lo cual, sorprende, puedes dibujar glDrawArrays/Elements
y reutilizar (¡la copia de la GPU, no solo la copia del usuario!) El siguiente marco tal cual, siempre que no se cambie nada.
El modo inmediato debe, no hay otra manera, asignar un búfer y hacer una transferencia PCIe cada vez. O, algo equivalente en latencia (GPU leyendo la memoria principal a través del bus, lo que sea). El controlador no puede saber (o suponer) que los datos permanecieron exactamente igual que el marco anterior.
Llevar datos a la GPU es una operación de alta velocidad, pero también de alta latencia . No sólo es el traslado en autobús de por sí complicado protocolo de latencia a, alta (varias capas de protocolo, en paquetes, reconocimientos, etc.), sino que además no todas las GPU son incluso capaces de transferir y dibujar al mismo tiempo, o si ellos pueden hacerlo , es posible que no siempre puedan cambiar o iniciar nuevas operaciones libremente mientras hacen algo diferente. Lea como: No transferirás en vano .