您始终可以使用四边形的正投影到后备缓冲器/曲面.
或者只是在NDC空间中发送四边形(-1到+1)而不需要任何矩阵乘法.
更新,因为这显然不够清楚:
对于"全屏四边形"方法,发送两个tris或一个四边形,如下所示:

顶点的配置/顺序取决于您的缠绕顺序和原始模式.Z值应当介于-1来1.你可以选择-1.投影和ModelView矩阵应该是一个单位矩阵(全是零,然后在主对角线上1)

换句话说,您不需要进行任何矩阵乘法,因此您的着色器中实际上不需要任何矩阵运算,因为坐标已经处于标准化设备坐标(NDC)中.
即它在目标设备间隔内被读取 
这是一些代码:
glMatrixMode (GL_MODELVIEW);
glPushMatrix ();
glLoadIdentity ();
glMatrixMode (GL_PROJECTION);
glPushMatrix ();
glLoadIdentity ();
glBegin (GL_QUADS);
glVertex3i (-1, -1, -1);
glVertex3i (1, -1, -1);
glVertex3i (1, 1, -1);
glVertex3i (-1, 1, -1);
glEnd ();
glPopMatrix ();
glMatrixMode (GL_MODELVIEW);
glPopMatrix ();
Run Code Online (Sandbox Code Playgroud)
然后,顶点着色器只是像素/片段着色器的直接传递.显然,您将相关的像素/纹理缓冲区设置为着色器资源/变量,并在像素/片段着色器中对其进行采样.并且不要忘记将顶点的texcoord UV设置为它们对应的纹理值(0-1).
或者,您也可以使用相应的窗口系统将纹理直接blit到窗口表面.这很大程度上取决于您用于窗口管理的内容(例如SDL),也可能需要某种纹理格式/布局才能工作(或转换).
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |