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); }
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(); }
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); } }
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); }
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); }
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); }
public void RenderTexture(RTexture texture, Math.Rectangle bounds, RColor color) { RenderTexture(texture, bounds, color, Matrix.Identity, false); }
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); } }