Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-04-18 12:21:17 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-04-18 13:50:28 +0300
commiteda0ebc7b3d3d2a4716bbb19881a0f0e35a56235 (patch)
treec49165b8e76cd8d753996c9d9b0e987b0c84d5e5 /source/blender/gpu/intern/gpu_texture.c
parent7bf8ab3c494ee4e4e78cf846a3b7c07a472302e0 (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.c39
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()) {