src/texture.c

changeset 86
943bf9d7c6d6
parent 85
f51eec4e7ccb
child 88
6234b7ea48f3
equal deleted inserted replaced
85:f51eec4e7ccb 86:943bf9d7c6d6
37 if (error == GL_INVALID_ENUM) { 37 if (error == GL_INVALID_ENUM) {
38 asc_error("Tried to use more texture units than available."); 38 asc_error("Tried to use more texture units than available.");
39 } 39 }
40 glBindTexture(tex->target, tex->tex_id); 40 glBindTexture(tex->target, tex->tex_id);
41 glUniform1i(uniform_location, unit); 41 glUniform1i(uniform_location, unit);
42 asc_error_catch_all_gl();
42 } 43 }
43 44
44 void asc_texture_from_surface(AscTexture *tex, SDL_Surface const *surface) { 45 void asc_texture_from_surface(AscTexture *tex, SDL_Surface const *surface) {
46 if (asc_texture_uninitialized(tex)) {
47 asc_error("Tried to use uninitialized texture.");
48 asc_dprintf("Texture address: %"PRIxPTR, (uintptr_t) tex);
49 return;
50 }
45 glBindTexture(tex->target,tex->tex_id); 51 glBindTexture(tex->target,tex->tex_id);
46 glPixelStorei(GL_UNPACK_ROW_LENGTH, 52 glPixelStorei(GL_UNPACK_ROW_LENGTH,
47 surface->pitch / surface->format->BytesPerPixel); 53 surface->pitch / surface->format->BytesPerPixel);
48 glTexImage2D(tex->target, 0, GL_RGBA, 54 glTexImage2D(tex->target, 0, GL_RGBA,
49 surface->w, surface->h, 55 surface->w, surface->h,
50 0, GL_BGRA, 56 0, GL_BGRA,
51 GL_UNSIGNED_BYTE, surface->pixels); 57 GL_UNSIGNED_BYTE, surface->pixels);
58 asc_error_catch_all_gl();
52 } 59 }
53 60
54 void asc_texture_init( 61 void asc_texture_init(
55 AscTexture *tex, 62 AscTexture *tex,
56 enum asc_texture_target target, 63 enum asc_texture_target target,
77 glTexParameteri(tex->target, GL_TEXTURE_MIN_FILTER, 84 glTexParameteri(tex->target, GL_TEXTURE_MIN_FILTER,
78 texture_filters[min_filter]); 85 texture_filters[min_filter]);
79 glTexParameteri(tex->target, GL_TEXTURE_MAG_FILTER, 86 glTexParameteri(tex->target, GL_TEXTURE_MAG_FILTER,
80 texture_filters[mag_filter]); 87 texture_filters[mag_filter]);
81 asc_dprintf("Initialized texture: %u", tex->tex_id); 88 asc_dprintf("Initialized texture: %u", tex->tex_id);
89 asc_error_catch_all_gl();
82 } 90 }
83 91
84 void asc_texture_destroy(AscTexture *tex) { 92 void asc_texture_destroy(AscTexture *tex) {
85 asc_dprintf("Destroy texture: %u", tex->tex_id); 93 asc_dprintf("Destroy texture: %u", tex->tex_id);
86 glDeleteTextures(1, &tex->tex_id); 94 glDeleteTextures(1, &tex->tex_id);

mercurial