1 #include "gl.h"
2
3 #ifndef GL_TEXTURE_H
4 #define GL_TEXTURE_H
5
6 void glTexImage2D(GLenum target, GLint level, GLint internalFormat,
7 GLsizei width, GLsizei height, GLint border,
8 GLenum format, GLenum type, const GLvoid *data);
9
10 void glTexImage1D(GLenum target, GLint level, GLint internalFormat,
11 GLsizei width, GLint border,
12 GLenum format, GLenum type, const GLvoid *data);
13
14 void glTexImage3D(GLenum target, GLint level, GLint internalFormat,
15 GLsizei width, GLsizei height, GLsizei depth,
16 GLint border, GLenum format, GLenum type, const GLvoid *data);
17
18 void glBindTexture(GLenum target, GLuint texture);
19 void glDeleteTextures(GLsizei n, const GLuint * textures);
20 void glTexParameteri(GLenum target, GLenum pname, GLint param);
21 GLboolean glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences);
22
23 void tex_coord_rect_arb(GLfloat *tex, GLsizei len,
24 GLsizei width, GLsizei height);
25 void tex_coord_npot(GLfloat *tex, GLsizei len,
26 GLsizei width, GLsizei height,
27 GLsizei nwidth, GLsizei nheight);
28 int npot(int n);
29
30 typedef struct {
31 GLuint texture;
32 GLenum target;
33 GLsizei width;
34 GLsizei height;
35 GLsizei nwidth;
36 GLsizei nheight;
37 GLboolean uploaded;
38 } gltexture_t;
39
KHASH_MAP_INIT_INT(tex,gltexture_t *)40 KHASH_MAP_INIT_INT(tex, gltexture_t *)
41
42 static inline GLenum map_tex_target(GLenum target) {
43 switch (target) {
44 case GL_TEXTURE_1D:
45 case GL_TEXTURE_3D:
46 case GL_TEXTURE_RECTANGLE_ARB:
47 target = GL_TEXTURE_2D;
48 break;
49 case GL_PROXY_TEXTURE_1D:
50 case GL_PROXY_TEXTURE_3D:
51 target = GL_PROXY_TEXTURE_2D;
52 break;
53 }
54 return target;
55 }
56
57 #endif
58