NanoVG.net (FontStash.net)

Conversión a C# del código fuente del proyecto "NanoVG" (soportado solo GL2 "OpenGL 2.0"), todo en lenguaje de programación C#, no es un "wrapper", solo requiere de OpenTK.

"C# source code port of "NanoVG" project, turn everything in programming language C#, is not a "wrapper", only requires OpenTK."

 

  NanoVG.net - v17.02 - OpenTK_GL2 (FontStash.net) (Fecha de publicación: 28 de Febrero de 2017)

[01-Marzo-2017] YA ESTA TODO, O.K, ¡¡¡ PUES NO !!!

ToolkitOptions tkOptions = new ToolkitOptions();

            if (Environment.OSVersion.Platform != PlatformID.Unix)

                tkOptions.Backend = PlatformBackend.PreferNative;

            else

                // En Linux PlatformBackend.Default equivale a SDL2 si está presente la librería

                tkOptions.Backend = PlatformBackend.Default;

            Toolkit.Init(tkOptions);

[28-Febrero-2017] ¡¡¡ LA VERSION DE (OPENTK + SDL2 + LINUX) TOTALMENTE FUNCIONAL !!!

Ha sido posible gracias a la colaboración de 'https://github.com/jpbruyere' se ha resuelto el problema que no permitía visualizar NanoVG.net correctamente usando OpenTK.

Es necesario especificar explícitamente la versión de OpenGL (major/minor) en la llamada de construcción de la ventana GameWindow, yo he probado entre 2.0 y 3.0 y funciona, de lo contrario no se visualiza correctamente.

Para Linux, es necesario especificar SDL2 como 'PlatformBackend.Default', con X11 no funciona.

En Windows, basta con especificar 'PlatformBackend.PreferNative' y funcionará sin problemas.

Incorrecto, no funcionará;

     ToolkitOptions tkOptions = new ToolkitOptions();

            // En Linux PlatformBackend.Default equivale a SDL2 si está presente la librería

            tkOptions.Backend = PlatformBackend.PreferX11;

            Toolkit.Init(tkOptions);

public GLWindow(GraphicsMode gm)

            : base(1000, 600, gm)

{

    // Código del constructor

}

 

Correcto, funcionará;

ToolkitOptions tkOptions = new ToolkitOptions();

            // En Linux PlatformBackend.Default equivale a SDL2 si está presente la librería

            tkOptions.Backend = PlatformBackend.Default;

            Toolkit.Init(tkOptions);

           public GLWindow(GraphicsMode gm)

            : base(1000, 600, gm, "NanoVG.net", GameWindowFlags.Default, DisplayDevice.Default, 2, 0,

                  GraphicsContextFlags.Debug)

     { 

     // Código del constructor

}

A partir de ahora solo voy a mantener la versión de NanoVG.net basada en OpenTK.

 NanoVG.net v16.11 (FontStash.net) (Fecha de publicación: 01 de Noviembre de 2016)

            [28-Octubre-2016] ¡¡¡ Hay LUZ al final del túnel !!!

            Gracias al proyecto "Pencil.Gaming" he conseguido que todo funcione correctamente en Linux y Windows (en Windows aún no lo he probado pero

            seguro al 99.9% que funciona bien), ver imagen;

Izquierda: GLFW3 (Pencil.Gaming) y a la derecha GLFW3 (Native)

            A la izquierda "GLFW3 con Pencil.Gaming", a la derecha "GLFW3 nativo".

            [01-Noviembre-2016] ¡¡¡ SE ACABÓ !!!

            Todos los "widgets" implementados, aunque, solo hay una característica que no funciona ... algunos caracteres-iconos (lupa "🔍" y fiesta " 🎉") de las

            fuentes de iconos, sinceramente, no sé como funciona. Para la lupa he implementado el truco de detectar el código y sustituirlo por el correcto (magia);

            FontStash.fonsTextIterNext()

           

             // TODO

                if (iter.codepoint == 55357)

                {

                    //uint cp1 = (uint)iter.str[1];

                    iter.codepoint = 128269;

                }

           

            Para el icono-carácter de fiesta, no se muestra. Merece un estudio.

            A partir de aquí, limpieza, optimización y comprensión del código .... ¡¡¡ LO DIVERTIDO !!!

 

 CsNanoVG (Fecha de publicación: 22-Octubre-2016)

Portado a C# el código fuente del proyecto "NanoVG" (soportado solo GL2 "OpenGL 2.0"), todo en lenguaje de programación C#, no es un "wrapper", solo requiere de OpenTK.

"C# source code port of "NanoVG" project, turn everything in programming language C#, is not a "wrapper", only requires OpenTK."

Lamentablemente he detectado un problema ¡aunque aún no se cual es exactamente" con las plataformas OpenTK.SDL2 (tanto en Linux como en Windows) y OpenTK.X11 (solo en linux), que ocasiona que la representación de algunas formas o parte de estas sea incorrecta.

Usando la plataforma OpenTK.PreferNative (solo en Windows) todo funciona correctamente.

Aún me queda por implementar los widgets "Thumbnails" y "Paragraph" ... 

¡es agotador! ... ¡odio los punteros!

[17-Octubre-2016] ¡Sorpresa! Ejecuto el programa en Ubuntu 16.04 "virtualizado utilizando VirtualBox" y funciona todo correctamente (OpenTK.X11 y OpenTK.SDL2), el adaptador gráfico en este caso es "Chromium", ver siguiente imagen;

Ergo, el problema consiste en una extraña combinación de problemas en la unión de "OpenTK + Gallium 0.4 en Linux" y "OpenTK.SDL2 en Windows", ....

[22-Octubre-2016] He decido publicar lo que tengo hasta ahora, he intentado solucionar el problema por el cual la representación no es correcta, pero no lo he conseguido. El problema tiene que ver con el "stencil-buffer" por alguna extraña casualidad tanto OpenTK.X11 como OpenTK.SDL2 + Gallium 0.4 no se entienden bien al establecer el "stencil-buffer". Lo he probado también con Ubuntu 16.04-(64bit y 32bit) y con Fedora 24-64bit, en todos observo el mismo problema de representación, ver imagen siguiente.

CNanoVG (Proyecto original en 'C' y 'GLFW' de NanoVG para Monodevelop)

 

CsFontStash (26-Agosto-2016)

Portado a C# el código fuente del proyecto "FontStash", que utiliza a su vez la librería "Sean Barrett's stb_truetype.h", todo en lenguaje de programación C#, no es un "wrapper", solo requiere de OpenTK.

"C# source code port of "FontStash" project, which uses the library "Sean Barrett'sstb_truetype.h" turn everything in programming language C#, is not a "wrapper", only requires OpenTK."

Este es el primer paso "el fácil" (unos días codificando) ahora viene lo complicado, intentar comprender "adquirir el conocimiento" de como renderizar una fuente de letra truetype ... Muchos más días de búsqueda en internet, un mucho de ingeniería inversa con el modo depuración del IDE (se me olvidaba, todo programado con programas open-source, en Ubuntu y usando Monodevelop como IDE) y mucha paciencia ...

CsFontStash (Proyecto inicial ... ¡calentito, salido del horno!