1

Tema: Duda sobre OPENGL

Estoy programando un juego en openGL y tengo una duda (en realidad tengo muchas).

Suponer que estoy animando un cubo (o lo que sea) que lo único que hace es rotar en eje Y, y yo le pongo en la función que renderiza: angulo++;
Efectivamente el objeto rota.

Mi duda esta en a que velocidad? a la velocidad de mi tarjeta grafica o a alguna velocidad establecida? porque lo probé en 3 máquinas y en 2 tiene la misma velocidad en otra va mil veces más rápido (sin embargo es la de peor hardware).

Como limito una velocidad de animación?

Gracias

A person can have the greatest idea in the world— completely different and novel—but if that person can’t convince enough other people, it doesn’t matter. ~ Gregory Berns

Re: Duda sobre OPENGL

Las opciones son, tomar el tiempo al principio del loop y el final, y al actualizar la lógica,en este caso el al ángulo de giro multiplicado por este time span, con lo que en todas las maquinas, el cubo va a girar a la misma velocidad, la una diferencias va a ser la "fluidez" (cantidad de fps que se dibujan).

Sino, la otra opción es correr a una cantidad fija de fps (frames per second), tomando el tiempo al principio y final de loop, y haciendo un sleep de la relación entre este time span y los frames que quieras que corra la app.

Mi recomendación, es una combinación de ambas cosas, con la primera opción, te aseguras que la velocidad sea igual en todas las maquinas, y en combinación con la segunda, podes limitar la cantidad de fps a 60 por ej, para no desperdiciar recursos innecesariamente y tener el hardware al palo todo el tiempo.

Hacete una búsqueda por "game loop" y seguro vas a encontrar algo.

Saludos

40mm Watch - iPhone X - iPad 2018
2016 MBP Touch Bar 15"

3

Re: Duda sobre OPENGL

GRACIAS FINTHAMOUSSU!

Por ahora lo solucioné algo así que fue lo que se me ocurrió, creo que es la segunda solución:

int last=0;
float angulo=0.0;
void renderScene(void) {

    int now = glutGet( GLUT_ELAPSED_TIME );

    if(now-last>20){
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
           
        
        // DIBUJO ...

         angulo++;
        last = now;
    }
}

Voy a leer mas detenidamente la primera y la pruebo.

El problema que tengo ahora es que en una PC de las 4 que voy probando no me muestra gradientes solo colores solidos, y los negros o a lo que no le pongo color se queda transparente. Porque puede ser?

A person can have the greatest idea in the world— completely different and novel—but if that person can’t convince enough other people, it doesn’t matter. ~ Gregory Berns