protected void BindTexture(RenderState rstate, int cacheidx, string tex, int unit, SamplerFlags flags, string nullName = null) { if (tex == null) { if (nullName == null) throw new Exception(); tex = nullName; } if (textures[cacheidx] == null || !loaded[cacheidx]) textures[cacheidx] = (Texture2D)Library.FindTexture(tex); if (textures[cacheidx] == null) { textures[cacheidx] = (Texture2D)Library.FindTexture(ResourceManager.NullTextureName); loaded[cacheidx] = false; } else loaded[cacheidx] = true; var tex2d = textures[cacheidx]; if (tex2d.IsDisposed) tex2d = textures[cacheidx] = (Texture2D)Library.FindTexture(tex); tex2d.BindTo(unit); tex2d.SetFiltering(rstate.PreferredFilterLevel); if ((flags & SamplerFlags.ClampToEdgeU) == SamplerFlags.ClampToEdgeU) { tex2d.SetWrapModeS(WrapMode.ClampToEdge); } if ((flags & SamplerFlags.ClampToEdgeV) == SamplerFlags.ClampToEdgeV) { tex2d.SetWrapModeT(WrapMode.ClampToEdge); } if ((flags & SamplerFlags.MirrorRepeatU) == SamplerFlags.MirrorRepeatU) { tex2d.SetWrapModeS(WrapMode.MirroredRepeat); } if ((flags & SamplerFlags.MirrorRepeatU) == SamplerFlags.MirrorRepeatV) { tex2d.SetWrapModeT(WrapMode.MirroredRepeat); } }
private RenderTarget(Texture2D texture, TextureFormat format, SamplerFlags flags) { Handle = GraphicsContext.CreateFrameBuffer(texture, format, flags); _internalTexture = texture; }
/// <summary> /// Initializes a new instance of the <see cref="RenderTarget"/> struct. /// </summary> /// <param name="width">The width of the render target.</param> /// <param name="height">The height of the render target.</param> /// <param name="format">The format of the new surface.</param> /// <param name="flags">Texture sampling flags.</param> private RenderTarget(int width, int height, TextureFormat format, SamplerFlags flags) { Handle = GraphicsContext.CreateFrameBuffer(width, height, format, flags); _internalTexture = new Texture2D(GraphicsContext.GetFrameBufferTexture(Handle, 0), width, height, false, false); }