所以,我在纹理中读入了片段着色器。我可以输出到“显示”;但是如何输出/写入另一个纹理?基本上我想做的是:
read in info from texture 1 // working
do stuff with data //working.
output to texture 2 // ??
display texture 2 // working.
第二回合:
read in infom from texture 2 // working
do stuff with data //working.
output to texture 1 // ??
display texture 1 /// working.
我想在GPU上完成所有这些操作。它很容易在CPU上运行,但它会杀死性能(因此,为什么我在着色器中执行它)。
我想我想使用帧,纹理或像素缓冲区?
如果需要更多信息,纹理会像这样进入着色器:
//housekeeping.
glUseProgram(theProgram);
glUniform1i(glGetUniformLocation(theProgram, "TextureOne"), texId);
着色器:
#version 330 core
out vec4 outputColor;
in vec2 fragPosition; // 2d texture
uniform sampler2D TextureOne;
void main() {
outputColor = texture(TextureOne, fragPosition);
//outputColor goes to output display.
}
答案 0 :(得分:3)
使用帧缓冲对象(FBO)写入纹理,它们用作自定义绘制缓冲区,您可以将纹理作为绘制缓冲区(附件)附加,颜色写入将转到纹理。