Exemplo n.º 1
0
        protected virtual void Create()
        {
            ImGuiIO io = ImGui.GetIO();

            // Build texture atlas
            ImFontTextureData texData = io.FontAtlas.GetTexDataAsAlpha8();

            int lastTexture;

            GL.GetIntegerv(GL.Enum.GL_TEXTURE_BINDING_2D, out lastTexture);

            // Create OpenGL texture
            GL.GenTextures(1, out g_FontTexture);
            GL.BindTexture(GL.Enum.GL_TEXTURE_2D, g_FontTexture);
            GL.TexParameteri(GL.Enum.GL_TEXTURE_2D, GL.Enum.GL_TEXTURE_MIN_FILTER, (int)GL.Enum.GL_LINEAR);
            GL.TexParameteri(GL.Enum.GL_TEXTURE_2D, GL.Enum.GL_TEXTURE_MAG_FILTER, (int)GL.Enum.GL_LINEAR);
            GL.PixelStorei(GL.Enum.GL_UNPACK_ROW_LENGTH, 0);
            GL.TexImage2D(
                GL.Enum.GL_TEXTURE_2D,
                0,
                (int)GL.Enum.GL_ALPHA,
                texData.Width,
                texData.Height,
                0,
                GL.Enum.GL_ALPHA,
                GL.Enum.GL_UNSIGNED_BYTE,
                texData.Pixels
                );

            // Store the texture identifier in the ImFontAtlas substructure.
            io.FontAtlas.SetTexID(g_FontTexture);
            io.FontAtlas.ClearTexData(); // Clears CPU side texture data.
            GL.BindTexture(GL.Enum.GL_TEXTURE_2D, lastTexture);
        }
Exemplo n.º 2
0
        public void BuildTextureAtlas()
        {
            ImGuiIO io = ImGui.IO;
            // ImFontTextureData texData = io.FontAtlas.GetTexDataAsAlpha8();
            // Alpha8 has got some blending issues.
            ImFontTextureData texData = io.FontAtlas.GetTexDataAsRGBA32();

            Texture2D tex = new Texture2D(Game.GraphicsDevice, texData.Width, texData.Height, false, SurfaceFormat.Color);

            int[] data = new int[texData.Width * texData.Height];
            Marshal.Copy(texData.Pixels, data, 0, data.Length);
            tex.SetData(data);

            FontTexture = Register(tex);

            io.FontAtlas.SetTexID(FontTexture);
            io.FontAtlas.ClearTexData(); // Clears CPU side texture data.
        }