Tengo problemas para distinguir la diferencia práctica entre llamar glFlush()
y glFinish()
.
Los documentos dicen que glFlush()
y glFinish()
empujarán todas las operaciones almacenadas en búfer a OpenGL para que uno pueda estar seguro de que todas se ejecutarán, la diferencia es que glFlush()
regresa inmediatamente donde como glFinish()
bloques hasta que se completan todas las operaciones.
Después de leer las definiciones, pensé que si usaba glFlush()
eso probablemente me encontraría con el problema de enviar más operaciones a OpenGL de las que podría ejecutar. Entonces, solo para probar, cambié mi glFinish()
por a glFlush()
y he aquí, mi programa se ejecutó (por lo que pude ver), exactamente lo mismo; velocidades de cuadro, uso de recursos, todo era igual.
Entonces me pregunto si hay mucha diferencia entre las dos llamadas, o si mi código hace que se ejecuten de la misma manera. O dónde debería usarse uno frente al otro. También pensé que OpenGL tendría alguna llamada glIsDone()
para verificar si todos los comandos almacenados en búfer para a glFlush()
están completos o no (por lo que uno no envía operaciones a OpenGL más rápido de lo que se pueden ejecutar), pero no pude encontrar tal función .
Mi código es el típico bucle de juego:
while (running) {
process_stuff();
render_stuff();
}