1D textures were never part of GLES, so use 2D textures with Nx1 instead.
Supposedly they are just as fast (although it feels a bit less elegant).
glActiveTexture(GL_TEXTURE0 + *sampler_num);
check_error();
glActiveTexture(GL_TEXTURE0 + *sampler_num);
check_error();
- glBindTexture(GL_TEXTURE_1D, tex);
+ glBindTexture(GL_TEXTURE_2D, tex);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- 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,
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).
// 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;
check_error();
delete[] tmp;
// and 0 otherwise.
uniform float PREFIX(num_repeats);
// and 0 otherwise.
uniform float PREFIX(num_repeats);
-uniform sampler1D PREFIX(support_tex);
+uniform sampler2D PREFIX(support_tex);
vec4 FUNCNAME(vec2 tc) {
#if DIRECTION_VERTICAL
vec4 FUNCNAME(vec2 tc) {
#if DIRECTION_VERTICAL
- vec4 support = texture1D(PREFIX(support_tex), tc.y * PREFIX(num_repeats));
+ vec4 support = texture2D(PREFIX(support_tex), vec2(tc.y * PREFIX(num_repeats), 0.0));
vec4 c1 = INPUT(vec2(tc.x, 1.0 - (tc.y + support.x)));
vec4 c2 = INPUT(vec2(tc.x, 1.0 - (tc.y + support.y)));
#else
vec4 c1 = INPUT(vec2(tc.x, 1.0 - (tc.y + support.x)));
vec4 c2 = INPUT(vec2(tc.x, 1.0 - (tc.y + support.y)));
#else
- vec4 support = texture1D(PREFIX(support_tex), tc.x * PREFIX(num_repeats));
+ vec4 support = texture2D(PREFIX(support_tex), vec2(tc.x * PREFIX(num_repeats), 0.0));
vec4 c1 = INPUT(vec2(tc.x + support.x, tc.y));
vec4 c2 = INPUT(vec2(tc.x + support.y, tc.y));
#endif
vec4 c1 = INPUT(vec2(tc.x + support.x, tc.y));
vec4 c2 = INPUT(vec2(tc.x + support.y, tc.y));
#endif
float texdata[] = { 0, 1 };
glGenTextures(1, &src_texnum);
check_error();
float texdata[] = { 0, 1 };
glGenTextures(1, &src_texnum);
check_error();
- glBindTexture(GL_TEXTURE_1D, src_texnum);
+ glBindTexture(GL_TEXTURE_2D, src_texnum);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexImage1D(GL_TEXTURE_1D, 0, GL_R16F, 2, 0, GL_RED, GL_FLOAT, texdata);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F, 2, 1, 0, GL_RED, GL_FLOAT, texdata);
check_error();
// Basic state.
check_error();
// Basic state.
read_file("vs.vert"), read_file("texture1d.frag"));
glUseProgram(glsl_program_num);
check_error();
read_file("vs.vert"), read_file("texture1d.frag"));
glUseProgram(glsl_program_num);
check_error();
- glUniform1i(glGetUniformLocation(glsl_program_num, "tex"), 0); // Bind the 1D sampler.
+ glUniform1i(glGetUniformLocation(glsl_program_num, "tex"), 0); // Bind the 2D sampler.
check_error();
// Draw the texture stretched over a long quad, interpolating it out.
check_error();
// Draw the texture stretched over a long quad, interpolating it out.
movit_texel_subpixel_precision = biggest_jump;
// Clean up.
movit_texel_subpixel_precision = biggest_jump;
// Clean up.
- glBindTexture(GL_TEXTURE_1D, 0);
+ glBindTexture(GL_TEXTURE_2D, 0);
check_error();
glBindFramebuffer(GL_FRAMEBUFFER, 0);
check_error();
check_error();
glBindFramebuffer(GL_FRAMEBUFFER, 0);
check_error();
}
glGenTextures(1, &src_texnum);
check_error();
}
glGenTextures(1, &src_texnum);
check_error();
- glBindTexture(GL_TEXTURE_1D, src_texnum);
+ glBindTexture(GL_TEXTURE_2D, src_texnum);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexImage1D(GL_TEXTURE_1D, 0, GL_R32F, 512, 0, GL_RED, GL_FLOAT, texdata);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, 512, 1, 0, GL_RED, GL_FLOAT, texdata);
check_error();
// Basic state.
check_error();
// Basic state.
read_file("vs.vert"), read_file("texture1d.frag"));
glUseProgram(glsl_program_num);
check_error();
read_file("vs.vert"), read_file("texture1d.frag"));
glUseProgram(glsl_program_num);
check_error();
- glUniform1i(glGetUniformLocation(glsl_program_num, "tex"), 0); // Bind the 1D sampler.
+ glUniform1i(glGetUniformLocation(glsl_program_num, "tex"), 0); // Bind the 2D sampler.
// Draw the texture stretched over a long quad, interpolating it out.
float vertices[] = {
// Draw the texture stretched over a long quad, interpolating it out.
float vertices[] = {
movit_num_wrongly_rounded = wrongly_rounded;
// Clean up.
movit_num_wrongly_rounded = wrongly_rounded;
// Clean up.
- glBindTexture(GL_TEXTURE_1D, 0);
+ glBindTexture(GL_TEXTURE_2D, 0);
check_error();
glBindFramebuffer(GL_FRAMEBUFFER, 0);
check_error();
check_error();
glBindFramebuffer(GL_FRAMEBUFFER, 0);
check_error();
varying vec2 tc;
void main()
{
varying vec2 tc;
void main()
{
- gl_FragColor = texture1D(tex, tc.x);
+ gl_FragColor = texture2D(tex, tc); // Second component is irrelevant.