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