2012-05-31 137 views
1

我有一些透明的贴花渲染成一个单独的帧缓冲区。现在我试图将这个缓冲区与后台缓冲区(活动目标)混合。如何将片段着色器应用于每个像素?

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

回答

2

我对全屏矩形/四码 这是旧的方法 - 从OpenGL的1.1,但工程:)对于新的OpenGL 3. *您必须使用VBO /阵列

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(); 
当然

你有设置纹理之前

3

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

+0

我应该在哪里以及如何渲染它们?我有一个免费的移动照相机。一些示例代码或指导教程的链接会很好。 – Fabian

+0

对不起,我没有一个例子,只知道直接x的条款,所以希望有人能更好地解释...你不使用相机只使用-1,-1到1,1.在你的顶点着色器只是通过坐标通过。在您的像素着色器中,将坐标转换为0 - 1的范围以查找纹理中的像素...不需要任何复杂的转换 – jcoder

相关问题