Mis trabajos

Solo disponible en BuenasTareas
  • Páginas : 10 (2320 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de mayo de 2010
Leer documento completo
Vista previa del texto
Programación Gráfica en C (Nivel Principiante)

Introducción
Este documento trata de explicar, a grandes rasgos, cómo funciona el dibujo de pixels bajo
MS-DOS. En los tiempos que corren, es algo ya anticuado y prácticamente obsoleto, debido a que ya el 99% de los programas están hechos en Win95/98, y ahora con Windows 2000 y el próximo Windows ME, reducirán a 0 la programación bajo MS-DOS,pero, en mi opinión, y basándome en mi experiencia (poca), el manejo de gráficos es más “asequible” bajo MS-
DOS. Esto es un curso de iniciación al manejo de memoria gráfica, pixels, RGB, etc., y no pretende ser exhaustivo, sino dar unas líneas generales sobre cómo se hace, con sus ventajas e inconvenientes respecto a Windows. Se dan por supuesto algunos conocimientos de C (y
saber que es elAssembler), ya que los ejemplos serán fragmentos de código, no listados completos. El 95% de lo comentado aquí lo he comprobado yo mismo, y funciona, y se puede decir que es un pequeño recopilatorio de mis “andaduras” con la VGA desde que comenzé a programar en C.
Una nota más, emplearé abundantes tecnicismos en inglés (sin traducción ni acentos), asique
lo siento por los amantes de la lengua deCervantes :)
Espero que sirva de ayuda a todo aquel nostálgico, programador principiante o fanático del DOS. No soy un experto redactor, así que si algo no está bien explicado, mis disculpas por adelantado.
Un saludo,
- KaRt0nEs

Un poco de historia
No puedo empezar sin hacer un breve resumen antes de la evolución de las tarjetas gráficas desde los primeros PCs.
Cuando salieron los primeros PCs(8086 y similares), los monitores eran monocromos o de
escasos colores (4, 8 o a lo sumo 16). Eran los tiempos de las tarjetas CGA y EGA, lentas y muy simples. Con la llegada de los 286 y los 386, aparecieron las VGA, que soportaban 256 colores, algo más que de sobra para gráficos, juegos, etc. en esa época. Supusieron una revolución no sólo por esto, sino porque, aunque aparentemente soportaranpocos modos de vídeo (320x200 y 640x480 en modo gráfico son los más conocidos, aparte del clásico 80x25
del MS-DOS), los Hackers pronto descubrieron que podían manipularlas para conseguir modos gráficos no-nativos, como el famoso 320x240. Esto permitía jugar con muchos
parámetros, como velocidades de refresco, colores, resoluciones, etc. Se generalizó el modo
de 320x240 para los juegos, ya quesi nos fijamos, esta resolución si mantiene el ratio
(320x240, 640x480, 800x600,etc.) para que los pixels se vean cuadrados (en 320x200 se ven “achatados”). Debido a la velocidad de estos modos gráficos de baja resolución y a las optimizaciones que se han ido realizando, ha sido el estandar hasta la aparición de Windows
95.

Funcionamiento de la VGA. Comparación con el GUI de Windows
Cuandovemos una imagen en la pantalla, estamos viendo una copia de la imagen real. La
imagen no se dibuja directamente en el CRT (Tubo de Rayos Catódicos) del monitor, sino que primero se pinta en la memoria de la tarjeta, y posteriormente se vuelca el contenido al
monitor (a una velocidad que ni nos damos cuenta, a no ser que nuestros programas sean terriblemente lentos).
Esquema:


Orden dedibujar un pixel


El pixel se pinta en la memoria gráfica


La memoria gráfica es volcada al monitor, y vemos el pixel


Hay que tener en cuenta otras variables, como el refresco del monitor, a la hora de conseguir velocidad, pero no entraremos en estos detalles (eso se lo dejo a los programadores de Demos
y Juegos) salvo que entre en las optimizaciones que utilice como ejemplos.
Lamemoria gráfica se utiliza como la memoria normal, aunque antes hay que cambiar el modo de vídeo a la VGA. El tratamiento del modo gráfico es simple y tosco, ya que el MS-
DOS no distingue entre píxels, caracteres o valores. Trata todo como datos, lo que nos da una ventaja, y es el poder manipularlos a nuestra voluntad sin restricciones, pero también nos
obliga a tener en cuenta en cada momento...
tracking img