es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué hace glut drawText?

Desearía que las personas puedan ayudar a explicar el código a continuación.

El código proviene de aquí y funciona.

Las preguntas principales pueden incluir los usos de las siguientes funciones para dibujar el texto.

  • glGetDoublev
  • glPushMatrix
  • glPopMatrix
  • glLoadMatrixd(matrix)

¿Por qué los usamos?

El código completo se presenta nuevamente a continuación:

void drawText(const char* text, int length, int x, int y) {

    glMatrixMode(GL_PROJECTION);

    double* matrix = new double[16];
    glGetDoublev(GL_PROJECTION_MATRIX, matrix);
    glLoadIdentity();

    glOrtho(0, 800, 0, 600, -5, 5);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glPushMatrix();
    glLoadIdentity();

    glRasterPos2i(x, y);
    for (int i=0; i < length; i++) {
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, (int)text[i]);
        printf("¡Hola mundo!\n");
    }

    glPopMatrix();

    glMatrixMode(GL_PROJECTION);
    glLoadMatrixd(matrix);

    glMatrixMode(GL_MODELVIEW);
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Las funciones glGetDoublev, glPushMatrix, glPopMatrix y glLoadMatrixd(matrix) se utilizan en este código para restaurar el estado anterior de la matriz de proyección de OpenGL después de dibujar el texto.

    glGetDoublev(GL_PROJECTION_MATRIX, matrix) recupera la matriz de proyección actual y la guarda en matrix.

    glPushMatrix() guarda la matriz actual en una pila, y glPopMatrix() extrae la matriz superior de la pila, restaurando el estado anterior antes de dibujar el texto.

    glLoadMatrixd(matrix) carga la matriz de proyección desde matrix, que es la matriz guardada anteriormente, por lo tanto, restaura el estado anterior de la matriz de proyección.

    En general, el objetivo de utilizar estas funciones es asegurar que el texto se dibuje correctamente sin afectar el estado anterior de la matriz de proyección de OpenGL, lo cual puede ser necesario para otras partes del programa.

Comments are closed.