Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: deleted_account en 1 Marzo 2018, 22:42 pm



Título: ¿Cómo funciona la UI de los Sistemas Operativos?
Publicado por: deleted_account en 1 Marzo 2018, 22:42 pm
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!


Título: Re: ¿Cómo funciona la UI de los Sistemas Operativos?
Publicado por: engel lex en 1 Marzo 2018, 22:46 pm
Es nativo de windows, on usa ni directx ni opengl

Citar
En 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


Título: Re: ¿Cómo funciona la UI de los Sistemas Operativos?
Publicado por: Eleкtro en 2 Marzo 2018, 01:10 am
@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 | Wikipedia
The 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+ | Wikipedia
With 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 | Wikipedia
Windows 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!


Título: Re: ¿Cómo funciona la UI de los Sistemas Operativos?
Publicado por: engel lex en 2 Marzo 2018, 01:20 am
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 ;)


Título: Re: ¿Cómo funciona la UI de los Sistemas Operativos?
Publicado por: Eleкtro en 2 Marzo 2018, 01:39 am
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/DirectX
Originally, 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!


Título: Re: ¿Cómo funciona la UI de los Sistemas Operativos?
Publicado por: deleted_account en 3 Marzo 2018, 17:55 pm
Gracias a todos!