-#include <GL/glew.h>
+#include <epoxy/gl.h>
+#include <math.h>
-#include "fft_pass_effect.h"
#include "effect_util.h"
+#include "fft_pass_effect.h"
#include "util.h"
+using namespace std;
+
+namespace movit {
+
FFTPassEffect::FFTPassEffect()
: input_width(1280),
input_height(720),
glDeleteTextures(1, &tex);
}
-std::string FFTPassEffect::output_fragment_shader()
+string FFTPassEffect::output_fragment_shader()
{
char buf[256];
sprintf(buf, "#define DIRECTION_VERTICAL %d\n", (direction == VERTICAL));
return buf + read_file("fft_pass_effect.frag");
}
-void FFTPassEffect::set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num)
+void FFTPassEffect::set_gl_state(GLuint glsl_program_num, const string &prefix, unsigned *sampler_num)
{
Effect::set_gl_state(glsl_program_num, prefix, sampler_num);
glActiveTexture(GL_TEXTURE0 + *sampler_num);
check_error();
- glBindTexture(GL_TEXTURE_1D, tex);
+ glBindTexture(GL_TEXTURE_2D, tex);
check_error();
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
check_error();
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
check_error();
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
check_error();
// Supposedly FFTs are very sensitive to inaccuracies in the twiddle factors,
// small sizes, all components are exact anyway, so we can cheat there
// (although noting that the source coordinates become somewhat less
// accurate then, too).
- glTexImage1D(GL_TEXTURE_1D, 0, (subfft_size <= 4) ? GL_RGBA16F : GL_RGBA32F, fft_size, 0, GL_RGBA, GL_FLOAT, tmp);
+ glTexImage2D(GL_TEXTURE_2D, 0, (subfft_size <= 4) ? GL_RGBA16F : GL_RGBA32F, fft_size, 1, 0, GL_RGBA, GL_FLOAT, tmp);
check_error();
delete[] tmp;
assert(input_size % fft_size == 0);
set_uniform_float(glsl_program_num, prefix, "num_repeats", input_size / fft_size);
}
+
+} // namespace movit