Hola a todos!
Me preguntaba cómo es qué Windows crea las ventanas, el escritorio y todo lo demás relacionado con la interfáz.
Ya sé que esto se llega programando en conjunto a la placa de video y demás. Pero no se si utilizaron API como OpenGL, o si fue todo desde 0.
En caso de ser desde 0, me gustaría que me recomienden alguna página con documentación al respecto.
Muchas Gracias!
Es nativo de windows, on usa ni directx ni opengl
CitarEn caso de ser desde 0, me gustaría que me recomienden alguna página con documentación al respecto.
aquí si no sabría, microsoft no revela muchos detalles de sus productos, podrías es buscar info sobre la api de uso
@
Thiamatt: la pregunta que formulas es obvia, date cuenta, no existe ninguna razón por la que
Microsoft vaya a usar
OpenGL cuando precisamente ya han creado
Microsoft DirectX (el driver y todas las APIs) para ese propósito con su sistema operativo...
@
Engel: un pequeño error sin importancia, pero para aclarar: por supuesto que el sistema operativo
Windows usa
DirectX para renderizar (parte de) la UI, vuelvo a lanzar la misma pregunta retórica: ¿cómo no va a usarlo si es precisamente el driver y la colección de APIs de dibujado avanzado creada por
Microsoft?, su sistema de renderización está basado en esa tecnología de renderización que ellos han creado... en
GDI y
DirectX.
Según el tipo de ventana, para la renderización con aceleración por hardware (siempre que sea posible en la tarjeta gráfica)
Microsoft usa
GDI/
GDI+ o bien
DirectX (
DirectShow,
Direct2D o
Direct3D, etc). Todas las tecnologías de renderización mencionadas son de la marca
Microsoft y operan o se comunican de la siguiente manera mediante dos interfaces de controlador de dispositivo (o DDI) como se puede ver en este diagrama:
(https://msdn.microsoft.com/dynimg/IC405526.png)
Fuente:
- Overview of the Windows Graphics Architecture | MSDN (https://msdn.microsoft.com/es-es/library/windows/desktop/ff684176(v=vs.85).aspx)
El escritorio de Windows no es más que una ventana Win32 (GDI+) con un control de tipo LIST (donde se muestran los iconos), y la barra de tareas es otra ventana Win32. Si nos referimos al menú de inicio de Windows 10 o al panel de configuración moderna estilo "METRO" que reemplaza el antiguo panel de control pues son ventanas WPF/XAML (Direct3D).
(https://i.imgur.com/qr738mM.png)
(https://i.imgur.com/btOGwCx.png)
nota: la herramienta que utilicé es
Microsoft UI Inspect (del kit de herramientas para
UI Automation incluidas en la SDK de Windows), pero podría servir cualquier otra aplicación similar de inspección de ventanas como por ejemplo
Microsoft Spy++,
WinSpy,
WinSpy++ o
Window Detective.
Aquí tienes más información donde puedes contrastar todo o parte de las cosas que afirmé, y documentarte más:
GDI | Wikipedia (https://en.wikipedia.org/wiki/Graphics_Device_Interface)
Cita de: GDI | WikipediaThe Graphics Device Interface (GDI) is a Microsoft Windows application programming interface and core operating system component responsible for representing graphical objects and transmitting them to output devices such as monitors and printers.
GDI+ | Wikipedia (https://en.wikipedia.org/wiki/Graphics_Device_Interface#Windows_XP)
Cita de: GDI+ | WikipediaWith the introduction of Windows XP, GDI was complemented by the C++-based GDI+ subsystem. GDI+
Use of these features is apparent in Windows XP's user interface and several of its applications such as Microsoft Paint, Windows Picture and Fax Viewer, Photo Printing Wizard, and My Pictures Slideshow screensaver, and their presence in the basic graphics layer greatly simplifies implementations of vector-graphics systems such as Flash or SVG.
WPF | Wikipedia (https://en.wikipedia.org/wiki/Windows_Presentation_Foundation)
Cita de: WPF | WikipediaWindows Presentation Foundation (WPF) is a graphical subsystem by Microsoft for rendering user interfaces in Windows-based applications. WPF uses DirectX.
- DirectX | Wikipedia (https://en.wikipedia.org/wiki/DirectX)
- DirectShow | Wikipedia (https://en.wikipedia.org/wiki/DirectShow)
- Direct2D | Wikipedia (https://en.wikipedia.org/wiki/Direct2D)
- Direct3D | Wikipedia (https://en.wikipedia.org/wiki/Direct3D)
Para la renderización de texto en el sistema operativo/interfaz de usuario/ventanas se usa o bien
GDI,
ClearType, o
DirectX (
DirectWrite).
- DirectWrite | Wikipedia (https://en.wikipedia.org/wiki/DirectWrite))
- ClearType | Wikipedia (https://en.wikipedia.org/wiki/ClearType))
+
- Type rendering: operating systems| blog.typekit.com (https://blog.typekit.com/2010/10/15/type-rendering-operating-systems/)
Y si quieres aburrirte un rato con información histórica... por no llamarlo "vintage" xD:
- https://en.wikipedia.org/wiki/Operating_system (https://en.wikipedia.org/wiki/Operating_system) + https://en.wikipedia.org/wiki/Operating_system#User_interface (https://en.wikipedia.org/wiki/Operating_system#User_interface)
- https://en.wikipedia.org/wiki/Graphical_user_interface
- https://en.wikipedia.org/wiki/Shell_(computing) (https://en.wikipedia.org/wiki/Shell_(computing))
Saludos!
sabia que usaban direct2d, pero no sabía que pertenecía a la suite de directx (aunque debía ser logico)
:o gracias por la info y el diagrama ;)
A modo de chuleta para que no haga falta memorizar los nombres o su relación con DirectX: aunque en realidad no estoy 100% seguro pero estoy casi convencido de que cualquier API de Microsoft que exista y que esté relacionada con multimedia/gráficos/sonido que empiece por "Direct" forma parte de DirectX y no de otra cosa ajena, ya que parece ser una especie de convención:
Cita de: https://en.wikipedia.org/wiki/DirectXOriginally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound, and so forth.
( aunque también hay APIs que no empiezan por "Direct", sino por la "X" de DirectX, como
XAudio2)
PD: en ese artículo de Wikipedia falta por mencionar algunas API cuyos nombres empiezan por "Direct", como por ejemplo
DirectXMath.
saludos!