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>2020-07-17 04:21:54 +0300
committerClément Foucault <foucault.clem@gmail.com>2020-07-18 04:43:51 +0300
commit122d0c8f4bab5e1df22131a8bd6f025c19ed4925 (patch)
treef7ee281dc9377e049b18839893c4935bf029e871 /source/blender/editors/space_clip/clip_draw.c
parentdcf6e12a606f162aa0b70b003f521788eede3349 (diff)
Cleanup: ClipDraw: Use GPUTexture api and fix a vmem leak
Leak was silent as it was an opengl handle.
Diffstat (limited to 'source/blender/editors/space_clip/clip_draw.c')
-rw-r--r--source/blender/editors/space_clip/clip_draw.c34
1 files changed, 14 insertions, 20 deletions
diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c
index 7f85d0db930..d33f624063a 100644
--- a/source/blender/editors/space_clip/clip_draw.c
+++ b/source/blender/editors/space_clip/clip_draw.c
@@ -1201,7 +1201,6 @@ static void draw_plane_marker_image(Scene *scene,
}
if (display_buffer) {
- GLuint texid;
float frame_corners[4][2] = {{0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f}};
float perspective_matrix[3][3];
float gl_matrix[4][4];
@@ -1218,23 +1217,17 @@ static void draw_plane_marker_image(Scene *scene,
GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA);
}
- glGenTextures(1, (GLuint *)&texid);
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, texid);
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- glTexImage2D(GL_TEXTURE_2D,
- 0,
- GL_RGBA8,
- ibuf->x,
- ibuf->y,
- 0,
- GL_RGBA,
- GL_UNSIGNED_BYTE,
- display_buffer);
+ GPUTexture *texture = GPU_texture_create_nD(ibuf->x,
+ ibuf->y,
+ 0,
+ 2,
+ display_buffer,
+ GPU_RGBA8,
+ GPU_DATA_UNSIGNED_BYTE,
+ 0,
+ false,
+ NULL);
+ GPU_texture_filter_mode(texture, false);
GPU_matrix_push();
GPU_matrix_mul(gl_matrix);
@@ -1246,7 +1239,7 @@ static void draw_plane_marker_image(Scene *scene,
immBindBuiltinProgram(GPU_SHADER_2D_IMAGE_COLOR);
- immUniform1i("image", 0);
+ immBindTexture("image", texture);
immUniformColor4f(1.0f, 1.0f, 1.0f, plane_track->image_opacity);
immBegin(GPU_PRIM_TRI_FAN, 4);
@@ -1269,7 +1262,8 @@ static void draw_plane_marker_image(Scene *scene,
GPU_matrix_pop();
- glBindTexture(GL_TEXTURE_2D, 0);
+ GPU_texture_unbind(texture);
+ GPU_texture_free(texture);
if (transparent) {
GPU_blend(false);