#pragma once #include #include #include /*! \file texture.h \brief Provides functions for handling textures. */ #ifdef __cplusplus extern "C" { #endif typedef kinc_image_t kinc_g4_image_t; typedef struct kinc_g4_texture { int tex_width; int tex_height; int tex_depth; kinc_image_format_t format; kinc_g4_texture_impl_t impl; } kinc_g4_texture_t; /// /// Allocates and initializes a texture without copying any data into it. /// /// The texture to initialize /// The width of the texture to create /// The height of the texture to create /// The format of the texture to create KINC_FUNC void kinc_g4_texture_init(kinc_g4_texture_t *texture, int width, int height, kinc_image_format_t format); /// /// Allocates and initializes a 3d-texture without copying any data into it. /// /// The texture to initialize /// The width of the texture to create /// The height of the texture to create /// The depth of the texture to create /// The format of the texture to create KINC_FUNC void kinc_g4_texture_init3d(kinc_g4_texture_t *texture, int width, int height, int depth, kinc_image_format_t format); /// /// Allocates and initializes a texture and copies image-data into it. /// /// The texture to initialize /// The image which's data is copied into the texture KINC_FUNC void kinc_g4_texture_init_from_image(kinc_g4_texture_t *texture, kinc_image_t *image); /// /// Allocates and initializes a texture and copies image-data into it. /// /// The texture to initialize /// The image which's data is copied into the texture KINC_FUNC void kinc_g4_texture_init_from_image3d(kinc_g4_texture_t *texture, kinc_image_t *image); /// /// Deallocates and destroys a texture. /// /// The texture to destroy KINC_FUNC void kinc_g4_texture_destroy(kinc_g4_texture_t *texture); KINC_FUNC unsigned char *kinc_g4_texture_lock(kinc_g4_texture_t *texture); KINC_FUNC void kinc_g4_texture_unlock(kinc_g4_texture_t *texture); /// /// Clears parts of a texture to a color. /// KINC_FUNC void kinc_g4_texture_clear(kinc_g4_texture_t *texture, int x, int y, int z, int width, int height, int depth, unsigned color); /// /// Generates the mipmap-chain for a texture. /// /// The render-target to create the mipmaps for /// The number of mipmap-levels to generate KINC_FUNC void kinc_g4_texture_generate_mipmaps(kinc_g4_texture_t *texture, int levels); /// /// Sets the mipmap for one level of a texture. /// /// The texture to set a mipmap-level for /// The image-data for the mipmap-level to set /// The mipmap-level to set KINC_FUNC void kinc_g4_texture_set_mipmap(kinc_g4_texture_t *texture, kinc_image_t *mipmap, int level); /// /// Returns the stride of the first mipmap-layer of the texture in bytes. /// /// The texture to figure out the stride for /// The stride of the first mipmap-layer in bytes KINC_FUNC int kinc_g4_texture_stride(kinc_g4_texture_t *texture); #ifdef KINC_ANDROID KINC_FUNC void kinc_g4_texture_init_from_id(kinc_g4_texture_t *texture, unsigned texid); #endif #if defined(KINC_IOS) || defined(KINC_MACOS) KINC_FUNC void kinc_g4_texture_upload(kinc_g4_texture_t *texture, uint8_t *data, int stride); #endif #ifdef __cplusplus } #endif