我创建了几个浮点RGBA纹理......
glBindTexture( GL_TEXTURE_2D, texid[k] );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA,
GL_FLOAT, data);
Run Code Online (Sandbox Code Playgroud)
然后我在着色器程序中交替地双重缓冲渲染/采样
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, texid[i], 0)
Run Code Online (Sandbox Code Playgroud)
...
state_tex_loc = glGetUniformLocation( program, "state_tex" )
glUniform1i( state_tex_loc, 0 )
glActiveTexture( GL_TEXTURE0 )
glBindTexture( GL_TEXTURE_2D, texid[1-i] )
Run Code Online (Sandbox Code Playgroud)
...
void main( void )
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
vec2 sample_pos = gl_Vertex.xy / vec2( xscale, yscale );
vec4 sample = texture2D( state_tex, sample_pos.xy );
sample.rgb = sample.rgb …Run Code Online (Sandbox Code Playgroud)