Skip to content

Latest commit

 

History

History
600 lines (499 loc) · 10.9 KB

DOC.md

File metadata and controls

600 lines (499 loc) · 10.9 KB

libESTK v4.0.0 documentation

Misc

esErr

typedef enum {
	ES_FAIL=0,
	ES_OK=1,
} esErr;

esBool

typedef enum {
	ES_FALSE = 0,
	ES_TRUE = 1,
} esBool;

esCheckGlError

void esCheckGlError(void);

esFileAlloc

void *esFileAlloc(const char *file_name);

Math

esVec2f

typedef struct { float x, y; } esVec2f;

esVec3f

typedef struct { float x, y, z; } esVec3f;

esMat3f

typedef struct {
	float mat[3*3];
} esMat3f;

esMat4f

typedef struct {
	float mat[4*4];
} esMat4f;

esMat3f_MulVec3f

esVec3f esMat3f_MulVec3f(const esMat3f *m, esVec3f v);

esQuatf

typedef struct {
	float x, y, z, w;
} esQuatf;

esQuatf_normalize

esQuatf esQuatf_normalize(esQuatf q);

esQuatf_mul

esQuatf esQuatf_mul(esQuatf q0, esQuatf q1);

esQuatf_local

esQuatf esQuatf_local(esQuatf q, float angle);

esQuatf_matrix

void esQuatf_matrix(esMat3f *dst, esQuatf q);

Logging

esLogClass

typedef enum {
	ES_INFO, // Information
	ES_WARN, // Warning
	ES_ERRO, // Error
	ES_DEBU, // Debug
} esLogClass;

esLogMessage

typedef void (*esLogMessage) (esLogClass class, const char *message);

esLogCallback

void esLogCallback(esLogMessage callback);

esLog

void esLog(int class, const char *fmt, ...);

esLogVersion

void esLogVersion(void);

esLogUnimplemented

void esLogUnimplemented();

Game loop

esGame_init

void esGame_init(int screen_width, int screen_height);

esGame_quit

void esGame_quit(void);

esGame_glSwap

void esGame_glSwap(void);

esGame_loop

void esGame_loop(void (*frame)(float t), void (*exit)(), int frame_rate);

esGame_loopQuit

void esGame_loopQuit(void);

esGame_registerKey

void esGame_registerKey(int sdlkey, void (*callback)(int key, int down));

esGame_registerMouse

void esGame_registerMouse(void (*callback) (int button, int down, int x, int y, int dx, int dy));

esGame_captureMouse

void esGame_captureMouse(void (*callback) (int button, int down, int x, int y, int dx, int dy));

esGame_windowSize

void esGame_windowSize(int *w, int *h);

Shader

esUniform

typedef int esUniform;

esShaderType

typedef enum {
	ES_SHADER_VERT,
	ES_SHADER_FRAG,
} esShaderType;

esShader

typedef struct {
	int glProgram;
	esUniform uniforms[UNIFORMS_MAX];
	int glShaders[SHADERS_MAX];
	int shaderCount;
} esShader;

esShader_reset

void esShader_reset(esShader *shader);

esShader_loadFile

esErr esShader_loadFile(esShader *shader,
		esShaderType type, const char *fileName);

esShader_loadText

esErr esShader_loadText(esShader *shader,
		esShaderType type, const char *source);

esShader_compile

esErr esShader_compile(esShader *shader,
		const esShaderAttrib *attribs, int attribCount);

esShader_dualFile

esErr esShader_dualFile(esShader *shader,
		const char *vertFile, const char *fragFile,
		const esShaderAttrib *attribs, int attribCount);

esShader_dualText

esErr esShader_dualText(esShader *shader,
		const char *vertSource, const char *fragSource,
		const esShaderAttrib *attribs, int attribCount);

esShader_use

void esShader_use(const esShader *shader);

esShader_free

void esShader_free(esShader *shader);

esShader_uniformRegister

esErr esShader_uniformRegister(esShader *shader,
		esUniform reg, const char *name);

esShader_uniformGl

esErr esShader_uniformGl(esShader *shader, esUniform reg);

Geometry

esGeoBuf

typedef enum {
	ES_GEOBUF_STATIC,
	ES_GEOBUF_DYNAMIC,
	ES_GEOBUF_STREAM,
} esGeoBufType;

esGeoDataType

typedef enum {
	ES_GEODATA_FLOAT,
	ES_GEODATA_INT,
	ES_GEODATA_UINT,
	ES_GEODATA_SHORT,
	ES_GEODATA_USHORT,
	ES_GEODATA_BYTE,
	ES_GEODATA_UBYTE,
} esGeoDataType;

esGeoBuf

typedef struct {
	esGeoDataType dataType;
	unsigned int glBuf;
} esGeoBuf;

esGeoBuf_create

void esGeoBuf_create(esGeoBuf *buf);

esGeoBuf_array

void esGeoBuf_array(esGeoBuf *buf,
		const void *data, size_t size, esGeoBufType type);

esGeoBuf_arraySub

void esGeoBuf_arraySub(esGeoBuf *buf,
		const void *data, size_t size, int bufOffset);

esGeoBuf_element

void esGeoBuf_element(esGeoBuf *buf,
		const void *data, size_t size, esGeoBufType type);

esGeoBuf_free

void esGeoBuf_free(esGeoBuf *buf);

esGeo

typedef struct {
	int bufCount;

	struct {
		esGeoBuf *geobuf;
		esGeoDataType datatype;
		int elements;
		size_t offset, stride;
		esBool normalized;
	} buf[ES_GEOBUFS_MAX];
} esGeo;

esGeo_reset

void esGeo_reset(esGeo *geo, int bufCount);

esGeo_point

void esGeo_point(esGeo *geo, int id, esGeoBuf *geobuf,
		esGeoDataType datatype, int elements,
		size_t offset, size_t stride, esBool normalized);

esGeo_renderArray

void esGeo_renderArray(const esGeo *geo, int vertices);

esGeo_renderElements

void esGeo_renderElements(const esGeo *geo, const esGeoBuf *indices,
		esGeoDataType dataType, int vertexCount);

Projection

esProj_identity

void esProj_identity(esMat4f *mat);

esProj_ortho

void esProj_ortho(esMat4f *mat, float x0, float y0, float x1, float y1);

esProj_perspective

void esProj_perspective(
		esMat4f *mat, float fov, float screenratio, float near, float far,
		esVec3f eye, esVec3f at, esVec3f up);

Texture

esTextureMipmap

typedef enum {
	TEX_NONE,
	TEX_LINEAR,
} esTextureMipmap;

esTexture

typedef struct {
	int w, h;
	int gltexture;
} esTexture;

esTexture_load

esErr esTexture_load(esTexture *tex, const char *file_name,
		enum esTextureMipmap min, enum esTextureMipmap mag);

esTexture_use

void esTexture_use(esTexture *tex);

esTexture_free

void esTexture_free(esTexture *tex);

Multi render

esMultiRender

typedef struct {
	unsigned textureCount, width, height;
	esGLuint frameBuffer, depthBuffer;
	esGLuint renderTextures[ES_FRAMEBUFFER_MAX_TEXTURES];
} esMultiRender;

esMultiRender_create

esErr esMultiRender_create(esMultiRender *mr,
		unsigned width, unsigned height,
		esTextureMipmap mipMapMin, esTextureMipmap mipMapMag,
		unsigned textureCount, ...);

esMultiRender_destroy

void esMultiRender_destroy(esMultiRender *mr);

esMultiRender_bind

void esMultiRender_bind(esMultiRender *mr);

esMultiRender_unBind

void esMultiRender_unBind(void);

esMultiRender_bindTexture

void esMultiRender_bindTexture(esMultiRender *mr, unsigned textureId);

esMultiRender_bindTextureWithId

void esMultiRender_bindTextureWithId(esMultiRender *mr, unsigned textureId,
		unsigned openGlTextureId);

Audio

esSound

typedef struct {
	Mix_Chunk *chunk;
} esSound;

esSound_create

esErr esSound_create(esSound *sn, const char *file_name);

esSound_free

void esSound_free(esSound *sn);

esSound_play

void esSound_play(esSound *sn);

esMusic

typedef struct {
	Mix_Music *music;
} esMusic;

esMusic_create

esErr esMusic_create(esMusic *mu, const char *file_name);

esMusic_free

void esMusic_free(esMusic *mu);

esMusic_play

void esMusic_play(esMusic *mu);

esMusic_halt

void esMusic_halt(void);