avalonia c++ wpf cross-platform

c++ - avalonia ui



C++ analógico para WPF (2)

  1. Realmente no hay nada como esto. No multiplataforma en ningún caso. Direct2D funciona razonablemente bien, pero obviamente es solo para Windows. Y NVIDIA recientemente eliminó esta extensión de "ruta" de OpenGL que es similar en funcionalidad básica, pero es solo para NVIDIA (y no está disponible en Mac OSX). Cairo tiene un backend OpenGL, pero no tengo idea de lo bueno que es. No puede ser tan bueno si Mozilla descargó El Cairo en favor de D2D en Windows.
  2. Muchos kits de herramientas GUI tienen algún tipo de lenguaje para hacer una GUI. Qt tiene uno que está precompilado en C ++.
  3. No que yo sepa. El enlace de datos requiere alguna forma de reflexión (el enlace de datos de estilo WPF sí lo hace), y C ++ no tiene soporte nativo para la reflexión. Por lo tanto, debería implementar algún tipo de reflejo antes de poder comenzar a hacer que el enlace de datos al estilo WPF funcione.
  4. Eso viene con el # 1. Más o menos, ya que cualquier procesador basado en GPU podrá operar en resoluciones arbitrarias.

Me encanta C ++, pero honestamente, este tipo de cosas se implementa mejor para un lenguaje de nivel superior. La falta de soporte de reflexión basada en el lenguaje hará que la implementación de los datos vinculantes sea un gran problema. Mientras que, simplemente puede implementar el "render stuff to area" de bajo nivel y la gestión básica de ventanas / eventos en C ++, y luego exponerlo a un lenguaje de scripting donde el enlace de datos y ese tipo de trabajo. De esa manera, tiene la velocidad del código nativo donde la necesita, pero la versatilidad y el reflejo de un lenguaje de scripting para manejar la GUI y sus datos asociados.

Así que he estado bromeando con WPF un poco recientemente, y debo decir que la idea me gusta mucho. Me encanta el marco en su conjunto, desde la GUI hasta la plomería.

Sin embargo, por más que amo las tierras gestionadas, amo tanto mi código nativo. Así que me pregunto qué tipo de bibliotecas existen para C ++ que capturan la esencia de varias partes de WPF. No estoy buscando una solución de interoperabilidad, ni quiero las soluciones de Managed C ++ o C ++ / CLI, sino las soluciones puras de C ++.

Ahora, no estoy esperando encontrar una "copia" de WPF para C ++; no esperaría que eso existiera, ni lo necesitaría. En cambio, espero que bibliotecas diferentes capturen un subconjunto de los conceptos deseados. Mis intereses particulares son

  1. Gráficos acelerados por hardware para GUI''s basadas en widgets (a través de DirectX u OpenGL, preferiblemente este último)

  2. Lenguaje declarativo para el diseño de GUI (preferiblemente un dialecto XML)

  3. El enlace de datos

  4. Independencia de resolución (menos importante)

Para hablar un poco sobre mi razonamiento, me gustaría implementar una biblioteca de este tipo, que captura un modelo específico que he comenzado a trabajar. Estoy en el proceso de encontrar más inspiración y recursos útiles antes de cerrar mi diseño. La biblioteca está diseñada para ser multiplataforma, por lo que las referencias a ideas multiplataforma serían excelentes, pero no estrictamente necesarias, ya que generalmente soy capaz de traducir las cosas en soluciones multiplataforma.

Por último, aunque estoy escribiendo una biblioteca de C ++, y las ideas de C ++ serían excelentes, estoy abierto a las ideas de cualquier idioma nativo.

Gracias de antemano por cualquier ayuda.