Cómo se generan los gráficos, o mejor dicho, cómo funciona una tarjeta gráfica, es un misterio para muchos usuarios. Sin embargo, la GPU sigue una serie de pasos que desgranaré más adelante para generar los gráficos que puedes ver en pantalla. ¿Quieres conocerlos? Vamos allá.
Índice de contenidos
Antes de nada, hay que conocer qué son algunos componentes fundamentales para el funcionamiento de los gráficos generados por la tarjeta gráfica o GPU. Y estos elementos son:
Esto es desde el lado del software. Es decir, para que se genere un gráfico, se necesitan de todos estos elementos (excepto el motor gráfico, que es opcional y utilizado principalmente para videojuegos o simulaciones). Gracias a estos elementos, una app gráfica puede enviar una serie de comandos a la GPU para que sean procesados y se muestren los gráficos oportunos.
Desde que se envían los comandos para dibujar un gráfico en pantalla hasta que el fotograma llega al framebuffer y pasa a verse en la pantalla o monitor, se suceden una serie de pasos básicos que deberías conocer. Y es que, todos los gráficos de la interfaz del sistema operativo, programas, o de los videojuegos, vídeos, etc., que puedes ver, no son más que datos de textura, color, iluminación, geométricos, etc. Todo eso se procesa por la GPU en fracciones de segundo para mostrar decenas de fotogramas por segundo (FPS). Y todo esto empieza de la manera más simple…
En las GPUs modernas, se han incorporado funciones adicionales para mejorar la calidad de las imágenes y que también requieren ser procesadas. Estas funciones incluyen el escalado de imágenes, técnicas de anti-aliasing para suavizar bordes, el trazado de rayos para mejorar la iluminación, entre otras. Sin embargo, en la descripción que sigue, he tratado de ser breve y conciso para que puedas comprender el proceso sin entrar en detalles técnicos complicados que puedan alterar la visión general de cómo se crea un gráfico o cómo funciona la tarjeta gráfica…
#include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glVertex2f(-0.5f, -0.5f); // Vértice inferior izquierdo glVertex2f(0.5f, -0.5f); // Vértice inferior derecho glVertex2f(0.0f, 0.5f); // Vértice superior glEnd(); glFlush(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400, 400); glutCreateWindow("Triángulo en OpenGL"); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Fondo negro glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0f, 1.0f, -1.0f, 1.0f); // Definir el sistema de coordenadas glutDisplayFunc(display); glutMainLoop(); return 0; }
Anteriormente mencioné este tema, pero para resumirlo, la CPU, mediante el software (aplicaciones, API y drivers), utilizará comandos u objetos a través de la API gráfica y los enviará a la GPU para su procesamiento. La GPU utilizará los shaders, que son esencialmente códigos de manipulación, los cuales serán procesados en las unidades de sombreado, como los núcleos CUDA de NVIDIA o las Compute Units de AMD.
Por ejemplo, en el código anterior se muestra cómo se puede dibujar un triángulo sencillo. Este código crea una ventana utilizando la biblioteca GLUT (OpenGL Utility Toolkit) y dibuja un triángulo equilátero en el centro de la ventana. La función glBegin(GL_TRIANGLES) indica que se van a especificar vértices para dibujar un triángulo. Luego, con glVertex2f(x, y) se especifican las coordenadas de los tres vértices del triángulo. Al finalizar, glEnd() indica que se ha terminado de definir el triángulo. La función glFlush() asegura que el triángulo se dibuje en la ventana… Una vez compilado este código, y ejecutado, permitirá enviar los comandos y datos necesarios a la GPU con ayuda del driver o controlador.
Una vez que los vértices han sido enviados a la GPU y están listos para ser mostrados, la API gráfica se encargará de administrar el llamado «Rendering pipeline» o «tubería de renderizado», que consta de 6 etapas:
Finalmente, el frame o fotograma generado se transmitirá a través de la salida de la GPU, que está conectada a la pantalla, permitiendo que la imagen se visualice en la pantalla. La frecuencia de actualización de los fotogramas, también conocida como FPS (Frames Per Second), dependerá tanto de la capacidad de la GPU como de la pantalla. En función de estas capacidades, los fotogramas se actualizarán con mayor o menor velocidad, lo que determinará la fluidez y suavidad de la animación o contenido visual que se muestra en la pantalla.
Los píxeles se mapearán en la matriz o panel de la pantalla, apagando, encendiendo o conmutando los píxeles al color necesario para mostrar finalmente el triángulo y su textura…
Para aquellos que no estén familiarizados con el término «RAMDAC», es una abreviatura de «Random Access Memory Digital-to-Analog Converter», que significa «convertidor digital a analógico de memoria de acceso aleatorio». Básicamente, es un chip con una memoria RAM que se utiliza para transformar las señales digitales provenientes de la GPU en una señal analógica. Para realizar esta tarea, el RAMDAC requiere varios convertidores digital-analógico (DAC) y una memoria SRAM (memoria de acceso aleatorio estática) de alta velocidad. Este chip estaba presente en las tarjetas gráficas más antiguas, ya que necesitaban de él para realizar la conversión, dado que la señal que emitía la GPU era digital, mientras que las interfaces de conexión al monitor o pantalla eran analógicas, como es el caso de VGA, DVI-A, RGA, S-Video, vídeo compuesto, etc.
Te recomendamos las siguientes guías sobre GPU:
Ahora el gráfico o imagen estará presente en la pantalla, y la GPU volverá a repetir todos estos pasos una y otra vez con cada fotograma que sea necesario mostrar, así muchas veces por segundo, casi sin retrasos. ¿No es increíble? Comenta…
NVIDIA no solo da razones teóricas, sino fundamentos en forma de ofertas de todo GeForce…
Hace algunos meses salió una información que indicaba que las aceleradoras de IA Nvidia Blackwell…
Intel revela sus próximas aceleradoras Jaguar Shores, que van a llegar después del lanzamiento de…