]> git.sesse.net Git - nageru/blobdiff - flow.cpp
Hide the OpenGL window; it is rather annoying.
[nageru] / flow.cpp
index d425fe1d1baf12d4f57e48253eefd3c979631906..fe8435123243621ec712a26f37297e974d387a31 100644 (file)
--- a/flow.cpp
+++ b/flow.cpp
@@ -342,9 +342,7 @@ Sobel::Sobel()
 void Sobel::exec(GLint tex0_view, GLint grad0_tex, int level_width, int level_height)
 {
        glUseProgram(sobel_program);
-       glBindTextureUnit(0, tex0_view);
-       glBindSampler(0, nearest_sampler);
-       glProgramUniform1i(sobel_program, uniform_tex, 0);
+       bind_sampler(sobel_program, uniform_tex, 0, tex0_view, nearest_sampler);
 
        glViewport(0, 0, level_width, level_height);
        fbos.render_to(grad0_tex);
@@ -1111,7 +1109,6 @@ GLuint DISComputeFlow::exec(GLuint tex0, GLuint tex1)
                // Make sure we always read from the correct level; the chosen
                // mipmapping could otherwise be rather unpredictable, especially
                // during motion search.
-               // TODO: create these beforehand, and stop leaking them.
                GLuint tex0_view, tex1_view;
                glGenTextures(1, &tex0_view);
                glTextureView(tex0_view, GL_TEXTURE_2D, tex0, GL_R8, level, 1, 0, 1);
@@ -1172,6 +1169,8 @@ GLuint DISComputeFlow::exec(GLuint tex0, GLuint tex1)
                        prewarp.exec(tex0_view, tex1_view, dense_flow_tex, I_tex, I_t_tex, base_flow_tex, level_width, level_height);
                }
                release_texture(dense_flow_tex);
+               glDeleteTextures(1, &tex0_view);
+               glDeleteTextures(1, &tex1_view);
 
                // Calculate I_x and I_y. We're only calculating first derivatives;
                // the others will be taken on-the-fly in order to sample from fewer
@@ -1424,10 +1423,10 @@ int main(int argc, char **argv)
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 5);
        // SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG);
        SDL_Window *window = SDL_CreateWindow("OpenGL window",
-                       SDL_WINDOWPOS_UNDEFINED,
-                       SDL_WINDOWPOS_UNDEFINED,
-                       64, 64,
-                       SDL_WINDOW_OPENGL);
+               SDL_WINDOWPOS_UNDEFINED,
+               SDL_WINDOWPOS_UNDEFINED,
+               64, 64,
+               SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN);
        SDL_GLContext context = SDL_GL_CreateContext(window);
        assert(context != nullptr);