如何将片段着色器应用于每个像素?

时间:2012-05-31 13:27:17

标签: opengl rendering

我将一些透明贴花渲染到一个单独的帧缓冲区中。现在我正在尝试将此缓冲区与后台缓冲区(活动目标)混合。

我假设我必须在片段着色器中加载fbo的颜色缓冲区作为纹理,并将纹理颜色输出到活动目标。 如何告诉显卡对每个像素执行此操作?

2 个答案:

答案 0 :(得分:3)

绘制覆盖整个屏幕的四个或两个三角形。

答案 1 :(得分:2)

全屏矩形/四边形的代码 这是旧方法 - 来自OpenGL 1.1,但有效:)对于新的OpenGL 3. *你必须使用VBO / Arrays

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();

glBegin(GL_QUADS);
glTexCoord2f( 0,0 );
glVertex3d( -1.0,-1.0, 0 );
glTexCoord2f( 1,0 );
glVertex3d(  1.0,-1.0, 0 );
glTexCoord2f( 1,1 );
glVertex3d(  1.0, 1.0, 0 );
glTexCoord2f( 0,1 );
glVertex3d( -1.0, 1.0, 0 );
glEnd();

glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();

当然你必须在

之前设置纹理