2011-07-06 26 views
9

Disculpe si esto no tiene nada que ver aquí. Si es así; Por favor, siéntase libre de moverlo al sitio apropiado.
¿Cómo se renderiza GDI/GDI + en la tarjeta gráfica (mostrar contenido en la pantalla) sin el uso de una API de nivel inferior para comunicarse con la GPU como DirectX u OpenGL? ¿Cómo se dibuja en la pantalla sin el uso de cualquiera de las API? Sí; Sé que la imagen está compuesta y renderizada en la CPU, pero luego ALGUNA tiene que enviarse a la GPU antes de mostrarse en el monitor. ¿Como funciona esto?Cómo funciona GDI/GDI + sin OpenGL o DirectX

Respuesta

12

Las primitivas GDI son implementadas por el controlador de la tarjeta de video. El controlador de video es proporcionado por el fabricante de la GPU, y se comunica con la GPU utilizando la interfaz de nivel de registro patentada, no se necesita API pública en este nivel.

Contrariamente a lo que dice saber, la imagen generalmente no se procesa ni compila por completo en la CPU. Más bien, el controlador de video es libre de usar cualquier combinación de procesamiento de CPU y GPU, y generalmente una gran cantidad de comandos GDI (especialmente transferencias de bloque de bit, también conocido como blitting) se delegan en la GPU.

Como la interfaz propietaria tiene que ser lo suficientemente potente como para admitir el controlador de cliente OpenGL y el controlador DirectX, no sorprende que el controlador GDI pueda pasar comandos a la GPU para su ejecución.


temprana durante el arranque (y de instalación de Windows) cuando no hay ningún controlador específico del fabricante está disponible, la API de vídeo no realizar toda la representación en software y escribe en el uso de este dispositivo, que es simplemente el área de memoria que alimenta el RAMDAC GPU y mapeado en el espacio de direcciones de la CPU. El framebuffer se almacena en uno de varios formatos conocidos (definidos por VESA).

+1

Así que GDI se coloca en el nivel Direct3d u OpenGL (e implementa solo la API necesaria para el dibujo basado en ventanas) pero es paralela a ellos (no se usa entre sí). ¿Estoy en lo cierto? – SerG

+1

@SerG: Mayormente correcto. Las API son independientes, y han existido implementaciones separadas, aunque el controlador de video es libre de implementar solo un conjunto de comandos en su hardware y colocar los otros en la parte superior, o quizás tener un conjunto de comandos que no coincida exactamente con ninguno de ellos y todos son capas en la parte superior del conjunto de API/comando patentado. Las versiones recientes de Windows también requieren GDI y GDI + para renderizar en superficies fuera de pantalla que luego se combinan para formar la imagen total con DirectX. Pero desde la perspectiva de la aplicación, están totalmente separados. –