Example #1
0
        public IRenderable GetRenderableNode()
        {
            // Don't initialize more than once.
            // We'll assume the context isn't destroyed.
            if (renderableTexture == null)
            {
                renderableTexture = new RTexture
                {
                    IsSrgb = Format.ToString().ToLower().Contains("srgb")
                };

                if (glFormatByNuTexFormat.ContainsKey(Format))
                {
                    // This may require a higher OpenGL version for BC7.
                    if (!SFGraphics.GlUtils.OpenGLExtensions.IsAvailable("GL_ARB_texture_compression_bptc"))
                    {
                        throw new Rendering.Exceptions.MissingExtensionException("GL_ARB_texture_compression_bptc");
                    }

                    var sfTex = new SFGraphics.GLObjects.Textures.Texture2D();

                    if (glFormatByNuTexFormat[Format] != InternalFormat.Rgba)
                    {
                        sfTex.LoadImageData(Width, Height, Mipmaps, glFormatByNuTexFormat[Format]);
                    }

                    renderableTexture.renderTexture = sfTex;
                }
            }

            return(renderableTexture);
        }
Example #2
0
        public void RenderTexture(RTexture texture, Math.Rectangle bounds, RColor color, Matrix matrix, bool font)
        {
            RViewport viewport = REngine.Instance._viewport;

            UpdateQuad(bounds);
            blendState.PlatformApplyState();

            GL.Enable(EnableCap.Blend);
            GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);

            defaultShader.Bind();
            defaultShader.SetSamplerValue(RTextureLayer.DIFFUSE, texture);
            vertexQuad2D.Bind();
            vertexQuad2D.BindVertexArray();
            indexQuad2D.Bind();


            defaultShader.SetUniformValue("projection", camera2d.Projection);
            defaultShader.SetUniformValue("view", camera2d.View);
            defaultShader.SetUniformValue("diffuse_color", color.ToVector4());
            defaultShader.SetUniformValue("model", matrix);
            defaultShader.SetUniformValue("font", font);
            vertexQuad2D.VertexDeclaration.Apply(defaultShader, IntPtr.Zero);


            GL.DrawElements(PrimitiveType.Triangles, indexQuad2D.IndexCount, DrawElementsType.UnsignedShort, IntPtr.Zero);
            REngine.CheckGLError();

            GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.DstAlpha);
            GL.Disable(EnableCap.Blend);
            indexQuad2D.Unbind();
            vertexQuad2D.UnbindVertexArray();
            vertexQuad2D.Unbind();
            defaultShader.Unbind();
        }
Example #3
0
        public IRenderable GetRenderableNode()
        {
            // Don't initialize more than once.
            // We'll assume the context isn't destroyed.
            if (renderableTexture == null)
            {
                renderableTexture = new RTexture
                {
                    IsSrgb = surface.IsSRGB
                };

                // HACK: Nutex loading doesn't always work.
                try
                {
                    renderableTexture.SfTexture = surface.GetRenderTexture();
                    // TODO: Getting the BGRA data can randomly cause access violation exceptions.
                    //renderableTexture.BitmapImageData = renderableTexture.SfTexture.GetImageDataBgra();
                }
                catch (Exception)
                {
                    return(null);
                }
            }

            return(renderableTexture);
        }
    void ProcessRes(PropertyInfo pi)
    {
        var obj  = pi.GetValue(null, null);
        var type = obj.GetType();

        if (type == typeof(string))
        {
            var item = new RString();
            item.name  = pi.Name;
            item.value = obj as string;
            listString.Add(item);
        }
        else if (type == typeof(Texture2D))
        {
            var item = new RTexture();
            item.name  = pi.Name;
            item.value = obj as Texture2D;
            listTexture.Add(item);
        }
        else
        {
            var item = new RUnknown();
            item.name  = pi.Name;
            item.type  = type.Name;
            item.value = obj.ToString();
            listUnknown.Add(item);
        }
    }
    public void Add(string name, object obj, object tag = null)
    {
        var type = obj.GetType();

        if (type == typeof(Shader))
        {
            var item = new RShader();
            item.name  = name;
            item.value = obj as Shader;
            listShader.Add(item);
        }
        else if (type == typeof(Texture2D))
        {
            var item = new RTexture();
            item.name  = name;
            item.value = obj as Texture2D;
            listTexture.Add(item);
        }
        else if (type == typeof(Material))
        {
            var item = new RMaterial();
            item.name  = name;
            item.value = obj as Material;
            listMaterial.Add(item);
        }
        else if (type == typeof(GameObject))
        {
            var item = new RGameObject();
            item.name  = name;
            item.value = obj as GameObject;
            listGameObject.Add(item);
        }
        else if (type == typeof(GUISkin))
        {
            var item = new RGUISkin();
            item.name  = name;
            item.value = obj as GUISkin;
            listGUISkin.Add(item);
        }
        else if (type == typeof(Font))
        {
            var item = new RFont();
            item.name  = name;
            item.value = obj as Font;
            listFont.Add(item);
        }
        else
        {
            var item = new RUnknown();
            item.name  = name;
            item.type  = type.Name;
            item.value = obj.ToString();
            listUnknown.Add(item);
        }
    }
Example #6
0
        public IRenderable GetRenderableNode()
        {
            // TODO: Some texture files are 0 bytes.
            if (Mipmaps.Count == 0)
            {
                return(null);
            }

            // Don't initialize more than once.
            // We'll assume the context isn't destroyed.
            if (renderableTexture == null)
            {
                renderableTexture = new RTexture
                {
                    IsSrgb = Format.ToString().ToLower().Contains("srgb")
                };

                if (internalFormatByNuTexFormat.ContainsKey(Format))
                {
                    // This may require a higher OpenGL version for BC7.
                    if (!SFGraphics.GlUtils.OpenGLExtensions.IsAvailable("GL_ARB_texture_compression_bptc"))
                    {
                        throw new Rendering.Exceptions.MissingExtensionException("GL_ARB_texture_compression_bptc");
                    }

                    var sfTex = new Texture2D()
                    {
                        // Set defaults until all the sampler parameters are added.
                        TextureWrapS = TextureWrapMode.Repeat,
                        TextureWrapT = TextureWrapMode.Repeat
                    };

                    if (TextureFormatTools.IsCompressed(internalFormatByNuTexFormat[Format]))
                    {
                        sfTex.LoadImageData(Width, Height, Mipmaps, internalFormatByNuTexFormat[Format]);
                    }
                    else
                    {
                        var format = new TextureFormatUncompressed((PixelInternalFormat)internalFormatByNuTexFormat[Format], pixelFormatByNuTexFormat[Format], PixelType.UnsignedByte);
                        sfTex.LoadImageData(Width, Height, Mipmaps, format);
                    }

                    renderableTexture.renderTexture = sfTex;
                }
            }

            return(renderableTexture);
        }
Example #7
0
        public IRenderable GetRenderableNode()
        {
            // Don't initialize more than once.
            // We'll assume the context isn't destroyed.
            if (renderableTexture == null)
            {
                renderableTexture = new RTexture
                {
                    IsSrgb = surface.IsSRGB
                };

                renderableTexture.renderTexture = surface.GetRenderTexture();
            }

            return(renderableTexture);
        }
Example #8
0
        public IRenderable GetRenderableNode()
        {
            // Don't initialize more than once.
            // We'll assume the context isn't destroyed.
            if (renderableTexture == null)
            {
                renderableTexture = new RTexture
                {
                    IsSrgb = surface.IsSRGB
                };

                // HACK: Nutex loading doesn't always work.
                try
                {
                    renderableTexture.renderTexture = surface.GetRenderTexture();
                }
                catch (Exception)
                {
                    return(null);
                }
            }

            return(renderableTexture);
        }
Example #9
0
 public void RenderTexture(RTexture texture, Math.Rectangle bounds, RColor color)
 {
     RenderTexture(texture, bounds, color, Matrix.Identity, false);
 }
Example #10
0
 public void RenderTexture(RTexture texture, Math.Rectangle bounds)
 {
     RenderTexture(texture, bounds, RColor.White);
 }
 void ProcessRes(PropertyInfo pi)
 {
     var obj = pi.GetValue(null, null);
     var type = obj.GetType();
     if(type == typeof(string))
     {
         var item = new RString();
         item.name = pi.Name;
         item.value = obj as string;
         listString.Add(item);
     }
     else if (type == typeof(Texture2D))
     {
         var item = new RTexture();
         item.name = pi.Name;
         item.value = obj as Texture2D;
         listTexture.Add(item);
     }
     else
     {
         var item = new RUnknown();
         item.name = pi.Name;
         item.type = type.Name;
         item.value = obj.ToString();
         listUnknown.Add(item);
     }
 }