![]() |
naev 0.12.5
|
This file handles the opengl texture wrapper routines. More...
#include "array.h"#include "distance_field.h"#include "log.h"#include "md5.h"#include "nfile.h"#include "opengl.h"
Go to the source code of this file.
Data Structures | |
| struct | glTexList |
| Represents a node in the texture list. More... | |
Functions | |
| static uint8_t | SDL_GetAlpha (SDL_Surface *s, int x, int y) |
| Gets the alpha value of a pixel. | |
| static int | SDL_IsTrans (SDL_Surface *s, int x, int y) |
| Checks to see if a position of the surface is transparent. | |
| static USE_RESULT uint8_t * | SDL_MapAlpha (SDL_Surface *s, int tight) |
| Maps the surface transparency. | |
| static size_t | gl_transSize (const int w, const int h) |
| static USE_RESULT GLuint | gl_texParameters (unsigned int flags) |
| Sets default texture parameters. | |
| static USE_RESULT GLuint | gl_loadSurface (SDL_Surface *surface, unsigned int flags, int freesur, double *vmax) |
| Loads a surface into an opengl texture. | |
| static int | gl_loadNewImage (glTexture *tex, const char *path, int sx, int sy, unsigned int flags) |
| Only loads the image, does not add to stack unlike gl_newImage. | |
| static int | gl_loadNewImageRWops (glTexture *tex, const char *path, SDL_RWops *rw, int sx, int sy, unsigned int flags) |
| The heavy loading image backend image function. It loads images and does transparency mapping if necessary. | |
| static glTexture * | gl_texCreate (const char *path, int sx, int sy, unsigned int flags) |
| Creates a new texture. | |
| static int | gl_texAdd (glTexture *tex, int sx, int sy, unsigned int flags) |
| Adds a texture to the list under the name of path. | |
| static int | tex_cmp (const void *p1, const void *p2) |
| static void | tex_ctxSet (void) |
| static void | tex_ctxUnset (void) |
| void | gl_contextSet (void) |
| void | gl_contextUnset (void) |
| int | gl_fboCreate (GLuint *fbo, GLuint *tex, GLsizei width, GLsizei height) |
| Creates a framebuffer and its associated texture. | |
| int | gl_fboAddDepth (GLuint fbo, GLuint *tex, GLsizei width, GLsizei height) |
| Adds a depth attachment to an FBO. | |
| glTexture * | gl_loadImageData (float *data, int w, int h, int sx, int sy, const char *name) |
| USE_RESULT glTexture * | gl_texExistsOrCreate (const char *path, unsigned int flags, int sx, int sy, int *created) |
| Check to see if a texture matching a path already exists. | |
| glTexture * | gl_newImage (const char *path, const unsigned int flags) |
| Loads an image as a texture. | |
| glTexture * | gl_newImageRWops (const char *path, SDL_RWops *rw, const unsigned int flags) |
| Loads an image as a texture. | |
| glTexture * | gl_newSprite (const char *path, const int sx, const int sy, const unsigned int flags) |
| Loads the texture immediately, but also sets it as a sprite. | |
| glTexture * | gl_newSpriteRWops (const char *path, SDL_RWops *rw, const int sx, const int sy, const unsigned int flags) |
| Loads the texture immediately, but also sets it as a sprite. | |
| void | gl_freeTexture (glTexture *texture) |
| Frees a texture. | |
| glTexture * | gl_dupTexture (const glTexture *texture) |
| Duplicates a texture. | |
| USE_RESULT glTexture * | gl_rawTexture (const char *name, GLuint texid, double w, double h) |
| Creates a texture from a raw opengl index. | |
| int | gl_isTrans (const glTexture *t, const int x, const int y) |
| Checks to see if a pixel is transparent in a texture. | |
| void | gl_getSpriteFromDir (int *x, int *y, int sx, int sy, double dir) |
| Sets x and y to be the appropriate sprite for glTexture using dir. | |
| int | gl_initTextures (void) |
| Initializes the opengl texture subsystem. | |
| void | gl_exitTextures (void) |
| Cleans up the opengl texture subsystem. | |
| glTexture ** | gl_copyTexArray (glTexture **tex) |
| Copy a texture array. | |
| glTexture ** | gl_addTexArray (glTexture **tex, glTexture *t) |
| Adds an element to a texture array. | |
Variables | |
| static glTexList * | texture_list = NULL |
| static SDL_threadID | tex_mainthread |
| static SDL_mutex * | gl_lock = NULL |
| static SDL_mutex * | tex_lock = NULL |
This file handles the opengl texture wrapper routines.
Definition in file opengl_tex.c.
Adds an element to a texture array.
Definition at line 1067 of file opengl_tex.c.
| void gl_contextSet | ( | void | ) |
Definition at line 84 of file opengl_tex.c.
| void gl_contextUnset | ( | void | ) |
Definition at line 90 of file opengl_tex.c.
Copy a texture array.
Definition at line 1050 of file opengl_tex.c.
Duplicates a texture.
| texture | Texture to duplicate. |
Definition at line 891 of file opengl_tex.c.
| void gl_exitTextures | ( | void | ) |
Cleans up the opengl texture subsystem.
Definition at line 1023 of file opengl_tex.c.
| int gl_fboAddDepth | ( | GLuint | fbo, |
| GLuint * | tex, | ||
| GLsizei | width, | ||
| GLsizei | height ) |
Adds a depth attachment to an FBO.
Definition at line 313 of file opengl_tex.c.
| int gl_fboCreate | ( | GLuint * | fbo, |
| GLuint * | tex, | ||
| GLsizei | width, | ||
| GLsizei | height ) |
Creates a framebuffer and its associated texture.
| [out] | fbo | Framebuffer object id. |
| [out] | tex | Texture id. |
| width | Width to use. | |
| height | Height to use. |
Definition at line 268 of file opengl_tex.c.
| void gl_freeTexture | ( | glTexture * | texture | ) |
Frees a texture.
| texture | Texture to free. (If NULL, function does nothing.) |
Definition at line 835 of file opengl_tex.c.
| void gl_getSpriteFromDir | ( | int * | x, |
| int * | y, | ||
| int | sx, | ||
| int | sy, | ||
| double | dir ) |
Sets x and y to be the appropriate sprite for glTexture using dir.
Very slow, try to cache if possible like the pilots do instead of using in O(n^2) or worse functions.
| [out] | x | X sprite to use. |
| [out] | y | Y sprite to use. |
| sx | Number of sprites in X direction. | |
| sy | Number of sprites in Y direction. | |
| dir | Direction to get sprite from. |
Definition at line 977 of file opengl_tex.c.
| int gl_initTextures | ( | void | ) |
Initializes the opengl texture subsystem.
Definition at line 1012 of file opengl_tex.c.
| int gl_isTrans | ( | const glTexture * | t, |
| const int | x, | ||
| const int | y ) |
Checks to see if a pixel is transparent in a texture.
| t | Texture to check for transparency. |
| x | X position of the pixel. |
| y | Y position of the pixel. |
Definition at line 957 of file opengl_tex.c.
| glTexture * gl_loadImageData | ( | float * | data, |
| int | w, | ||
| int | h, | ||
| int | sx, | ||
| int | sy, | ||
| const char * | name ) |
Definition at line 352 of file opengl_tex.c.
|
static |
Only loads the image, does not add to stack unlike gl_newImage.
| tex | Texture to load to. |
| path | Image to load. |
| sx | X sprites to load. |
| sy | Y sprites to load. |
| flags | Flags to control image parameters. |
Definition at line 634 of file opengl_tex.c.
|
static |
The heavy loading image backend image function. It loads images and does transparency mapping if necessary.
| tex | Texture to load to. |
| path | Image to load. |
| sx | X sprites to load. |
| sy | Y sprites to load. |
| rw | SDL_Rwops structure to use to load. |
| flags | Flags to control image parameters. |
Definition at line 668 of file opengl_tex.c.
|
static |
Loads a surface into an opengl texture.
| surface | Surface to load into a texture. | |
| flags | Flags to use. | |
| freesur | Whether or not to free the surface. | |
| [out] | vmax | The maximum value in the case of an SDF texture. |
Definition at line 402 of file opengl_tex.c.
| glTexture * gl_newImage | ( | const char * | path, |
| const unsigned int | flags ) |
Loads an image as a texture.
May not necessarily load the image but use one if it's already open.
| path | Image to load. |
| flags | Flags to control image parameters. |
Definition at line 587 of file opengl_tex.c.
| glTexture * gl_newImageRWops | ( | const char * | path, |
| SDL_RWops * | rw, | ||
| const unsigned int | flags ) |
Loads an image as a texture.
May not necessarily load the image but use one if it's already open.
| path | Path name used for checking cache and error reporting. |
| rw | SDL_RWops structure to load from. |
| flags | Flags to control image parameters. |
Definition at line 611 of file opengl_tex.c.
| glTexture * gl_newSprite | ( | const char * | path, |
| const int | sx, | ||
| const int | sy, | ||
| const unsigned int | flags ) |
Loads the texture immediately, but also sets it as a sprite.
| path | Image to load. |
| sx | Number of X sprites in image. |
| sy | Number of Y sprites in image. |
| flags | Flags to control image parameters. |
Definition at line 785 of file opengl_tex.c.
| glTexture * gl_newSpriteRWops | ( | const char * | path, |
| SDL_RWops * | rw, | ||
| const int | sx, | ||
| const int | sy, | ||
| const unsigned int | flags ) |
Loads the texture immediately, but also sets it as a sprite.
| path | Image name for deduplication. |
| rw | SDL_RWops structure to load for. |
| sx | Number of X sprites in image. |
| sy | Number of Y sprites in image. |
| flags | Flags to control image parameters. |
Definition at line 808 of file opengl_tex.c.
| USE_RESULT glTexture * gl_rawTexture | ( | const char * | name, |
| GLuint | texid, | ||
| double | w, | ||
| double | h ) |
Creates a texture from a raw opengl index.
Definition at line 917 of file opengl_tex.c.
|
static |
Adds a texture to the list under the name of path.
Definition at line 555 of file opengl_tex.c.
|
static |
Creates a new texture.
Definition at line 483 of file opengl_tex.c.
| USE_RESULT glTexture * gl_texExistsOrCreate | ( | const char * | path, |
| unsigned int | flags, | ||
| int | sx, | ||
| int | sy, | ||
| int * | created ) |
Check to see if a texture matching a path already exists.
Note this increments the used counter if it exists. Does not actually initialize and set otex->gtex->texture if created.
| path | Path to the texture. | |
| flags | Flags used by the new texture. | |
| sx | X sprites. | |
| sy | Y sprites. | |
| [out] | created | Whether or not the texture was created. |
Definition at line 508 of file opengl_tex.c.
|
static |
Sets default texture parameters.
Definition at line 220 of file opengl_tex.c.
|
static |
Definition at line 211 of file opengl_tex.c.
|
static |
Gets the alpha value of a pixel.
| s | Surface to get value from. |
| x | X position of the pixel to check. |
| y | Y position of the pixel to check. |
Definition at line 122 of file opengl_tex.c.
|
static |
Checks to see if a position of the surface is transparent.
| s | Surface to check for transparency. |
| x | X position of the pixel to check. |
| y | Y position of the pixel to check. |
Definition at line 150 of file opengl_tex.c.
|
static |
Maps the surface transparency.
Basically generates a map of what pixels are transparent. Good for pixel perfect collision routines.
| s | Surface to map its transparency. |
| tight | Whether or not to store transparency per bit or |
Definition at line 169 of file opengl_tex.c.
|
static |
Definition at line 96 of file opengl_tex.c.
|
static |
Definition at line 72 of file opengl_tex.c.
|
static |
Definition at line 78 of file opengl_tex.c.
|
static |
Lock for OpenGL functions.
Definition at line 45 of file opengl_tex.c.
|
static |
Lock for texture list manipulation.
Definition at line 46 of file opengl_tex.c.
|
static |
Definition at line 44 of file opengl_tex.c.
|
static |
Texture list.
Definition at line 43 of file opengl_tex.c.