/// <summary> /// Creates a texture for a rendering context. /// </summary> /// <param name="renderer">The rendering context</param> /// <param name="pixelFormat">One of the enumerated values in SDL_PixelFormatEnum</param> /// <param name="accessMode">One of the enumerated values in SDL_TextureAccess</param> /// <param name="width">The width of the texture in pixels</param> /// <param name="height">The height of the texture in pixels</param> public Texture(Renderer renderer, uint pixelFormat , TextureAccessMode accessMode, int width, int height) { this.pixelFormat = pixelFormat; this.accessMode = accessMode; Width = width; Height = height; isLocked = false; Handle = SDL.SDL_CreateTexture(renderer.Handle, pixelFormat, (int)accessMode, width, height); if (IntPtr.Zero == Handle) { throw new Exception("Error while creating texture: " + SDL.SDL_GetError()); } }
public Texture(Renderer renderer, Surface surface) { if (renderer == null) { throw new ArgumentNullException("renderer", Errors.E_RENDERER_NULL); } if (surface == null) { throw new ArgumentNullException("surface", Errors.E_SURFACE_NULL); } this.renderer = renderer; FilePath = surface.FilePath; AccessMode = TextureAccessMode.Static; Surface = surface; CreateTextureAndCleanup(surface.Width, surface.Height); }
public RenderTarget(Renderer renderer, int width, int height) { if (renderer == null) { throw new ArgumentNullException("renderer", Errors.E_RENDERER_NULL); } this.renderer = renderer; Width = width; Height = height; AccessMode = TextureAccessMode.Target; Handle = SDL.SDL_CreateTexture(renderer.Handle, SDL.SDL_PIXELFORMAT_RGBA8888, (int)AccessMode, Width, Height); if (Handle == IntPtr.Zero) { throw new InvalidOperationException(Utilities.GetErrorMessage("RenderTarget")); } }
internal IntPtr CreateTexture(int width, int height, PixelFormat pixelFormat, TextureAccessMode accessMode) { uint mappedPixelFormat = PixelFormatMap.EnumToSDL(pixelFormat); IntPtr unsafeHandle = SDL.SDL_CreateTexture(renderer.Handle, mappedPixelFormat, (int)accessMode, width, height); if (unsafeHandle == IntPtr.Zero) { throw new InvalidOperationException(Utilities.GetErrorMessage("SDL_CreateTextureFromSurface")); } return(unsafeHandle); }
internal Texture(IRenderer renderer, int width, int height, PixelFormat pixelFormat, TextureAccessMode accessMode) { if (renderer == null) { throw new ArgumentNullException(nameof(renderer)); } if (width < 0) { throw new ArgumentOutOfRangeException(nameof(width)); } if (height < 0) { throw new ArgumentOutOfRangeException(nameof(height)); } this.renderer = renderer; IntPtr unsafeHandle = CreateTexture(width, height, pixelFormat, accessMode); safeHandle = new SafeTextureHandle(unsafeHandle); QueryTexture(unsafeHandle); }
public ITexture CreateTexture(IRenderer renderer, int width, int height, PixelFormat pixelFormat, TextureAccessMode accessMode) { try { var texture = new Texture(renderer, width, height, pixelFormat, accessMode); logger?.LogTrace($"Texture created. Width = {texture.Width}, Height = {texture.Height}, PixelFormat = {texture.PixelFormat}, AccessMode = {texture.AccessMode}, Handle = {texture.Handle}."); return(texture); } catch (Exception ex) { logger?.LogError(ex, ex.Message); throw; } }