123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package sdl2
- import "core:c"
- when ODIN_OS == .Windows {
- foreign import lib "SDL2.lib"
- } else {
- foreign import lib "system:SDL2"
- }
- RendererFlag :: enum u32 {
- SOFTWARE = 0, /**< The renderer is a software fallback */
- ACCELERATED = 1, /**< The renderer uses hardware acceleration */
- PRESENTVSYNC = 2, /**< Present is synchronized with the refresh rate */
- TARGETTEXTURE = 3, /**< The renderer supports rendering to texture */
- }
- RendererFlags :: distinct bit_set[RendererFlag; u32]
- RENDERER_SOFTWARE :: RendererFlags{.SOFTWARE}
- RENDERER_ACCELERATED :: RendererFlags{.ACCELERATED}
- RENDERER_PRESENTVSYNC :: RendererFlags{.PRESENTVSYNC}
- RENDERER_TARGETTEXTURE :: RendererFlags{.TARGETTEXTURE}
- RendererInfo :: struct {
- name: cstring, /**< The name of the renderer */
- flags: RendererFlags, /**< Supported ::SDL_RendererFlags */
- num_texture_formats: u32, /**< The number of available texture formats */
- texture_formats: [16]u32, /**< The available texture formats */
- max_texture_width: c.int, /**< The maximum texture width */
- max_texture_height: c.int, /**< The maximum texture height */
- }
- /**
- * The scaling mode for a texture.
- */
- ScaleMode :: enum c.int {
- Nearest, /**< nearest pixel sampling */
- Linear, /**< linear filtering */
- Best, /**< anisotropic filtering */
- }
- /**
- * The access pattern allowed for a texture.
- */
- TextureAccess :: enum c.int {
- STATIC, /**< Changes rarely, not lockable */
- STREAMING, /**< Changes frequently, lockable */
- TARGET, /**< Texture can be used as a render target */
- }
- TEXTUREMODULATE_NONE :: 0x00000000 /**< No modulation */
- TEXTUREMODULATE_COLOR :: 0x00000001 /**< srcC = srcC * color */
- TEXTUREMODULATE_ALPHA :: 0x00000002 /**< srcA = srcA * alpha */
- /**
- * Flip constants for SDL_RenderCopyEx
- */
- RendererFlip :: enum c.int {
- NONE = 0x00000000, /**< Do not flip */
- HORIZONTAL = 0x00000001, /**< flip horizontally */
- VERTICAL = 0x00000002, /**< flip vertically */
- }
- Renderer :: struct {}
- Texture :: struct {}
- @(default_calling_convention="c", link_prefix="SDL_")
- foreign lib {
- GetNumRenderDrivers :: proc() -> c.int ---
- GetRenderDriverInfo :: proc(index: c.int, info: ^RendererInfo) -> c.int ---
- CreateWindowAndRenderer :: proc(width, height: c.int, window_flags: WindowFlags, window: ^^Window, renderer: ^^Renderer) -> c.int ---
- CreateRenderer :: proc(window: ^Window, index: c.int, flags: RendererFlags) -> ^Renderer ---
- CreateSoftwareRenderer :: proc(surface: ^Surface) -> ^Renderer ---
- GetRenderer :: proc(window: ^Window) -> ^Renderer ---
- GetRendererInfo :: proc(renderer: ^Renderer, info: ^RendererInfo) -> c.int ---
- GetRendererOutputSize :: proc(renderer: ^Renderer, w, h: ^c.int) -> c.int ---
- CreateTexture :: proc(renderer: ^Renderer, format: PixelFormatEnum, access: TextureAccess, w, h: c.int) -> ^Texture ---
- CreateTextureFromSurface :: proc(renderer: ^Renderer, surface: ^Surface) -> ^Texture ---
- QueryTexture :: proc(texture: ^Texture, format: ^u32, access, w, h: ^c.int) -> c.int ---
- SetTextureColorMod :: proc(texture: ^Texture, r, g, b: u8) -> c.int ---
- GetTextureColorMod :: proc(texture: ^Texture, r, g, b: ^u8) -> c.int ---
- SetTextureAlphaMod :: proc(texture: ^Texture, alpha: u8) -> c.int ---
- GetTextureAlphaMod :: proc(texture: ^Texture, alpha: ^u8) -> c.int ---
- SetTextureBlendMode :: proc(texture: ^Texture, blendMode: BlendMode) -> c.int ---
- GetTextureBlendMode :: proc(texture: ^Texture, blendMode: ^BlendMode) -> c.int ---
- SetTextureScaleMode :: proc(texture: ^Texture, scaleMode: ScaleMode) -> c.int ---
- GetTextureScaleMode :: proc(texture: ^Texture, scaleMode: ^ScaleMode) -> c.int ---
- UpdateTexture :: proc(texture: ^Texture, rect: ^Rect, pixels: rawptr, pitch: c.int) -> c.int ---
- UpdateYUVTexture :: proc(texture: ^Texture, rect: ^Rect, Yplane: ^u8, Ypitch: c.int, Uplane: ^u8, Upitch: c.int, Vplane: ^u8, Vpitch: c.int) -> c.int ---
- UpdateNVTexture :: proc(texture: ^Texture, rect: ^Rect, Yplane: ^u8, Ypitch: c.int, UVplane: ^u8, UVpitch: c.int) -> c.int ---
- LockTexture :: proc(texture: ^Texture, rect: ^Rect, pixels: ^rawptr, pitch: ^c.int) -> c.int ---
- LockTextureToSurface :: proc(texture: ^Texture, rect: ^Rect, surface: ^^Surface) -> c.int ---
- UnlockTexture :: proc(texture: ^Texture) ---
- RenderTargetSupported :: proc(renderer: ^PixelFormatEnum) -> bool ---
- SetRenderTarget :: proc(renderer: ^Renderer, texture: ^Texture) -> c.int ---
- GetRenderTarget :: proc(renderer: ^Renderer) -> ^Texture ---
- RenderSetLogicalSize :: proc(renderer: ^Renderer, w, h: c.int) -> c.int ---
- RenderGetLogicalSize :: proc(renderer: ^Renderer, w, h: ^c.int) ---
- RenderSetIntegerScale :: proc(renderer: ^Renderer, enable: bool) -> c.int ---
- RenderGetIntegerScale :: proc(renderer: ^Renderer) -> bool ---
- RenderSetViewport :: proc(renderer: ^Renderer, rect: ^Rect) -> c.int ---
- RenderGetViewport :: proc(renderer: ^Renderer, rect: ^Rect) ---
- RenderSetClipRect :: proc(renderer: ^Renderer, rect: ^Rect) -> c.int ---
- RenderGetClipRect :: proc(renderer: ^Renderer, rect: ^Rect) ---
- RenderIsClipEnabled :: proc(renderer: ^Renderer) -> bool ---
- RenderSetScale :: proc(renderer: ^Renderer, scaleX, scaleY: f32) -> c.int ---
- RenderGetScale :: proc(renderer: ^Renderer, scaleX, scaleY: ^f32) ---
- SetRenderDrawColor :: proc(renderer: ^Renderer, r, g, b, a: u8) -> c.int ---
- GetRenderDrawColor :: proc(renderer: ^Renderer, r, g, b, a: ^u8) -> c.int ---
- SetRenderDrawBlendMode :: proc(renderer: ^Renderer, blendMode: BlendMode) -> c.int ---
- GetRenderDrawBlendMode :: proc(renderer: ^Renderer, blendMode: ^BlendMode) -> c.int ---
- RenderClear :: proc(renderer: ^Renderer) -> c.int ---
- RenderDrawPoint :: proc(renderer: ^Renderer, x, y: c.int) -> c.int ---
- RenderDrawPoints :: proc(renderer: ^Renderer, points: [^]Point, count: c.int) -> c.int ---
- RenderDrawLine :: proc(renderer: ^Renderer, x1, y1, x2, y2: c.int) -> c.int ---
- RenderDrawLines :: proc(renderer: ^Renderer, points: [^]Point, count: c.int) -> c.int ---
- RenderDrawRect :: proc(renderer: ^Renderer, rect: ^Rect) -> c.int ---
- RenderDrawRects :: proc(renderer: ^Renderer, rect: ^Rect, count: c.int) -> c.int ---
- RenderFillRect :: proc(renderer: ^Renderer, rect: ^Rect) -> c.int ---
- RenderFillRects :: proc(renderer: ^Renderer, rects: [^]Rect, count: c.int) -> c.int ---
- RenderCopy :: proc(renderer: ^Renderer, texture: ^Texture, srcrect: ^Rect, dstrect: ^Rect) -> c.int ---
- RenderCopyEx :: proc(renderer: ^Renderer, texture: ^Texture, srcrect: ^Rect, dstrect: ^Rect, angle: f64, center: ^Point, flip: RendererFlip) -> c.int ---
- RenderDrawPointF :: proc(renderer: ^Renderer, x, y: f32) -> c.int ---
- RenderDrawPointsF :: proc(renderer: ^Renderer, points: [^]FPoint, count: c.int) -> c.int ---
- RenderDrawLineF :: proc(renderer: ^Renderer, x1, y1, x2, y2: f32) -> c.int ---
- RenderDrawLinesF :: proc(renderer: ^Renderer, points: [^]FPoint, count: c.int) -> c.int ---
- RenderDrawRectF :: proc(renderer: ^Renderer, rect: ^FRect) -> c.int ---
- RenderDrawRectsF :: proc(renderer: ^Renderer, rects: [^]FRect, count: c.int) -> c.int ---
- RenderFillRectF :: proc(renderer: ^Renderer, rect: ^FRect) -> c.int ---
- RenderFillRectsF :: proc(renderer: ^Renderer, rects: [^]FRect, count: c.int) -> c.int ---
- RenderCopyF :: proc(renderer: ^Renderer, texture: ^Texture, srcrect: ^Rect, dstrect: ^FRect) -> c.int ---
- RenderCopyExF :: proc(renderer: ^Renderer, texture: ^Texture, srcrect: ^Rect, dstrect: ^FRect, angle: f64, center: ^FPoint, flip: RendererFlip) -> c.int ---
- RenderReadPixels :: proc(renderer: ^Renderer, rect: ^Rect, format: u32, pixels: rawptr, pitch: c.int) -> c.int ---
- RenderPresent :: proc(renderer: ^Renderer) ---
- DestroyTexture :: proc(texture: ^Texture) ---
- DestroyRenderer :: proc(renderer: ^Renderer) ---
- RenderFlush :: proc(renderer: ^Renderer) -> c.int ---
- GL_BindTexture :: proc(texture: ^Texture, texw, texh: ^f32) -> c.int ---
- GL_UnbindTexture :: proc(texture: ^Texture) -> c.int ---
- RenderGetMetalLayer :: proc(renderer: ^Renderer) -> rawptr ---
- RenderGetMetalCommandEncoder :: proc(renderer: ^Renderer) -> rawptr ---
- }
|