rework of textures, finalization of basic opengl rendering
This commit is contained in:
@@ -2,10 +2,20 @@
|
||||
#define TEXTURES_H
|
||||
|
||||
#include "private/textures.h"
|
||||
#include "util.h"
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
#include <glad/glad.h>
|
||||
|
||||
/* type safe structure for persistent texture handles */
|
||||
typedef struct { int id; } t_texture_key;
|
||||
|
||||
/* tests whether given key structure corresponds to any texture */
|
||||
#define m_texture_key_is_valid(p_key) ((p_key).id != 0)
|
||||
|
||||
/* tests whether given key corresponds to atlas texture or a loner */
|
||||
#define m_texture_is_atlas(p_key) ((p_key).id > 0)
|
||||
|
||||
void textures_cache_init(struct texture_cache *cache, SDL_Window *window);
|
||||
void textures_cache_deinit(struct texture_cache *cache);
|
||||
|
||||
@@ -15,25 +25,27 @@ void textures_dump_atlases(struct texture_cache *cache);
|
||||
/* loads an image if it isn't in the cache, otherwise a no-op. */
|
||||
/* can be called from anywhere at any time after init, useful if you want to */
|
||||
/* preload textures you know will definitely be used */
|
||||
void textures_load(struct texture_cache *cache, const char *path);
|
||||
// void textures_load(struct texture_cache *cache, const char *path);
|
||||
|
||||
/* repacks the current texture atlas based on the texture cache */
|
||||
void textures_update_current_atlas(struct texture_cache *cache);
|
||||
/* repacks the current texture atlas based on the texture cache if needed */
|
||||
/* any previously returned srcrect results are invalidated after that */
|
||||
/* call it every time before rendering */
|
||||
void textures_update_atlas(struct texture_cache *cache);
|
||||
|
||||
/* returns a rect in a texture cache atlas based on a path, for drawing */
|
||||
/* if the texture is not found, returns a zero-filled rect (so check w or h) */
|
||||
SDL_Rect textures_get_srcrect(struct texture_cache *cache, const char *path);
|
||||
/* returns a persistent handle to some texture in cache, loading it if needed */
|
||||
/* check the result with m_texture_key_is_valid() */
|
||||
t_texture_key textures_get_key(struct texture_cache *cache, const char *path);
|
||||
|
||||
/* returns which atlas the texture in the path is in, starting from 0 */
|
||||
/* if the texture is not found, returns INT_MIN */
|
||||
int textures_get_atlas_index(struct texture_cache *cache, const char *path);
|
||||
/* returns a rect in a texture cache of the given key */
|
||||
t_rect textures_get_srcrect(const struct texture_cache *cache, t_texture_key key);
|
||||
|
||||
/* returns a rect of dimensions of the whole texture (whole atlas) */
|
||||
t_rect textures_get_dims(const struct texture_cache *cache, t_texture_key key);
|
||||
|
||||
/* binds atlas texture in opengl state */
|
||||
void textures_bind_atlas(struct texture_cache *cache, int index, GLenum target);
|
||||
|
||||
void textures_bind_loner(struct texture_cache *cache, const char *path, GLenum target);
|
||||
void textures_bind(const struct texture_cache *cache, t_texture_key key, GLenum target);
|
||||
|
||||
/* returns the number of atlases in the cache */
|
||||
size_t textures_get_num_atlases(struct texture_cache *cache);
|
||||
size_t textures_get_num_atlases(const struct texture_cache *cache);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user