1
« en: Jueves 9 de Mayo de 2013, 03:30 »
El hecho de que una misma tarjeta gráfica realice la tarea de mostrar las imágenes por pantalla y la de procesar la información 3D no significa que sean cosas relacionadas. Me explico:
Una tarjeta gráfica en si misma está compuesta por un conversor digital a analógico, memoria (framebuffer) y algo de lógica. Su única función es la de dibujar en pantalla el contenido de esa memoria, es decir, la imagen.
Una GPU no es una tarjeta gráfica, sino que es una pieza de hardware diseñada para convertir de forma rápida y eficiente vectores y texturas en un array de píxeles que puede ser mostrado por pantalla o no. De hecho, la GPU de una tarjeta gráfica moderna puede ser usada sin interferir en lo mostrado por pantalla, pues son dos cosas muy distintas.
Es perfectamente posible diseñar dos tarjetas independientes que realicen ambas funciones por separado: una que se encargue de "refrescar" la pantalla y otra que se encargue de convertir esos vectores y texturas en mapas de bits.
Lo que debe quedar claro es que la visualización por pantalla y el dibujado 3D son cosas distintas. Es perfectamente posible implementar la funcionalidad de una GPU en el propio procesador (la CPU); claro que a expensas de una seria reducción del rendimiento. Como curiosidad mencionar que existen "tarjetas gráficas" que no disponen de un conversor analógico digital ni de un conector VGA o DVI cuya única finalidad es la de ofrecer esa "aceleración por hardware", es decir, la GPU para cómputos de propósito general y no solo el rasterizado de imágenes vectoriales en 3D.
Si tu misión es implementar una librería 3D como OpenGL para un sistema operativo que no soporte el fabricante de tu tarjeta, olvídate de acceder directamente al hardware, pues hay muy pocas tarjetas cuyas especificaciones sean abiertas y muchas menos cuyas especificaciones sean completas. Asume que solo podrás acceder a las funciones de tarjeta de vídeo (framebuffer) mediante el estándar VESA y deberás implementar toda la funcionalidad de la librería 3D en el procesador (usando las extensiones SSE mejorarás bastante el rendimiento).
Saludos.