¿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);
}
davy.ai
Las funciones
glGetDoublev
,glPushMatrix
,glPopMatrix
yglLoadMatrixd(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 enmatrix
.glPushMatrix()
guarda la matriz actual en una pila, yglPopMatrix()
extrae la matriz superior de la pila, restaurando el estado anterior antes de dibujar el texto.glLoadMatrixd(matrix)
carga la matriz de proyección desdematrix
, 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.