コード例 #1
0
        /// <summary>
        /// Create an image from an existing texture.
        /// </summary>
        /// <param name="rect">position and size</param>
        /// <param name="texture">texture, call<see cref="CreateTexture"/>to create it.</param>
        public static void Image(Rect rect, ITexture texture)
        {
            var window = GetCurrentWindow();

            if (window.SkipItems)
            {
                return;
            }

            var id        = window.GetID(texture.GetHashCode());
            var container = window.AbsoluteVisualList;
            var node      = (Node)container.Find(visual => visual.Id == id);

            if (node == null)
            {
                //create node
                node             = new Node(id, $"{nameof(Image)}<Native_{texture.GetNativeTextureId()}>");
                node.UseBoxModel = true;
                node.RuleSet.Replace(GUISkin.Current[GUIControlName.Image]);
                container.Add(node);
            }
            node.ActiveSelf = true;

            // rect
            node.Rect = window.GetRect(rect);

            // draw
            using (var dc = node.RenderOpen())
            {
                dc.DrawBoxModel(texture, node.RuleSet, node.Rect);
            }
        }
コード例 #2
0
        public static void Image(ITexture texture)
        {
            var window = GetCurrentWindow();

            if (window.SkipItems)
            {
                return;
            }

            var id        = window.GetID(texture.GetHashCode());
            var container = window.RenderTree.CurrentContainer;
            var node      = container.GetNodeById(id);

            if (node == null)
            {
                //create node
                node             = new Node(id, $"{nameof(Image)}<Native_{texture.GetNativeTextureId()}>");
                node.UseBoxModel = true;
                node.RuleSet.Replace(GUISkin.Current[GUIControlName.Image]);
                node.AttachLayoutEntry(texture.Size);
            }
            container.AppendChild(node);
            node.ActiveSelf = true;

            // rect
            node.Rect = window.GetRect(id);

            // draw
            using (var dc = node.RenderOpen())
            {
                dc.DrawBoxModel(texture, node.RuleSet, node.Rect);
            }
        }
コード例 #3
0
        public void StartDrawMeshToImage(int width, int height)
        {
            //create texture
            textureForDrawMesh = new OpenGLTexture();
            textureForDrawMesh.LoadImage(new Rgba32[width * height], width, height);

            //create frame buffer
            GL.GenFramebuffers(1, frameBuffersForDrawMesh);
            frameBufferForDrawMesh = frameBuffersForDrawMesh[0];
            GL.BindFramebuffer(GL.GL_FRAMEBUFFER_EXT, frameBufferForDrawMesh);
            GL.BindTexture(GL.GL_TEXTURE_2D, framebufferColorTexture);
            GL.FramebufferTexture2D(GL.GL_FRAMEBUFFER_EXT, GL.GL_COLOR_ATTACHMENT0_EXT,
                GL.GL_TEXTURE_2D, (uint) textureForDrawMesh.GetNativeTextureId(), 0);
            if (GL.CheckFramebufferStatus(GL.GL_FRAMEBUFFER_EXT) != GL.GL_FRAMEBUFFER_COMPLETE_EXT)
            {
                throw new Exception("Framebuffer is not complete.");
            }
        }