diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-04-18 12:21:17 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-04-18 13:50:28 +0300 |
commit | eda0ebc7b3d3d2a4716bbb19881a0f0e35a56235 (patch) | |
tree | c49165b8e76cd8d753996c9d9b0e987b0c84d5e5 /source/blender/gpu/intern/gpu_texture.c | |
parent | 7bf8ab3c494ee4e4e78cf846a3b7c07a472302e0 (diff) |
GPUTexture: Add Mipmap Control functions.
Diffstat (limited to 'source/blender/gpu/intern/gpu_texture.c')
-rw-r--r-- | source/blender/gpu/intern/gpu_texture.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/source/blender/gpu/intern/gpu_texture.c b/source/blender/gpu/intern/gpu_texture.c index 6af238aaff4..525a2b3d5dc 100644 --- a/source/blender/gpu/intern/gpu_texture.c +++ b/source/blender/gpu/intern/gpu_texture.c @@ -722,6 +722,25 @@ int GPU_texture_bound_number(GPUTexture *tex) return tex->number; } +void GPU_texture_generate_mipmap(GPUTexture *tex) +{ + if (tex->number >= GPU_max_textures()) { + fprintf(stderr, "Not enough texture slots.\n"); + return; + } + + if (tex->number == -1) + return; + + if (tex->number != 0) + glActiveTexture(GL_TEXTURE0 + tex->number); + + glGenerateMipmap(tex->target_base); + + if (tex->number != 0) + glActiveTexture(GL_TEXTURE0); +} + void GPU_texture_compare_mode(GPUTexture *tex, bool use_compare) { if (tex->number >= GPU_max_textures()) { @@ -764,6 +783,26 @@ void GPU_texture_filter_mode(GPUTexture *tex, bool use_filter) glActiveTexture(GL_TEXTURE0); } +void GPU_texture_mipmap_mode(GPUTexture *tex, bool use_mipmap) +{ + if (tex->number >= GPU_max_textures()) { + fprintf(stderr, "Not enough texture slots.\n"); + return; + } + + if (tex->number == -1) + return; + + if (tex->number != 0) + glActiveTexture(GL_TEXTURE0 + tex->number); + + GLenum mipmap = use_mipmap ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR; + glTexParameteri(tex->target_base, GL_TEXTURE_MIN_FILTER, mipmap); + + if (tex->number != 0) + glActiveTexture(GL_TEXTURE0); +} + void GPU_texture_wrap_mode(GPUTexture *tex, bool use_repeat) { if (tex->number >= GPU_max_textures()) { |