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
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. Mezclar DirectX y OpenGL
- 2. En Windows, ¿cómo difiere OpenGL de DirectX?
- 3. Mostrar 100 cubos flotantes usando DirectX O OpenGL
- 4. OpenGL/DirectX Hook - Similar a FRAPS
- 5. Triángulo orden de dibujo en DirectX/OpenGL
- 6. Cómo diseñar una "capa de abstracción" de OpenGL DirectX
- 7. DirectX 9 o DirectX 10 para principiantes?
- 8. Teoría de gráficos 3D y código sin OpenGL, DirectX, XNA, y otros
- 9. OpenGL - ¿Cómo funciona la transparencia?
- 10. C# 2D Gráficos vectoriales Juego usando DirectX u OpenGL?
- 11. ¿Usando Qt con DirectX?
- 12. OpenGL GL_DEPTH_TEST no funciona
- 13. OpenGL antialiasing no funciona
- 14. Inicializando OpenGL sin GLUT
- 15. La captura de escritorio con DirectX no funciona
- 16. ¿Cómo soportan las GPU la ejecución de OpenGL y DirectX API?
- 17. Diferido Shading DirectX demos?
- 18. DirectX Desktop
- 19. OpenGL sin X.org en Linux
- 20. OpenGL sin una tarjeta gráfica
- 21. ¿Aprendizaje de OpenGL sin GLUT?
- 22. OpenGL stencil buffer O operación?
- 23. Captura de framebuffer DirectX 11 (C++, no Win32 o D3DX)
- 24. ¿Cómo funciona mercurial sin Python?
- 25. OpenGL 3.2 ¿Guía de programación?
- 26. Core Animation o OpenGL ES?
- 27. Funciones de conversión no miembro; Casting de diferentes tipos, p. Vector DirectX para vector OpenGL
- 28. Inicialización de contexto OpenGL mínima sin ventana
- 29. OpenGL Hello World en Mac sin XCode
- 30. ¿Debo crear aplicaciones CUDA ahora o esperar a DirectX 11?
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
@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. –