如何操作渲染纹理上的数据

时间:2017-10-14 17:39:44

标签: opengl

我想在OpenGL中处理渲染的像素数据。例如,在下图中,红色矩形是我的灰度值图像,我将其加载到纹理然后渲染以填充整个屏幕(黑色矩形),使用以下代码:

void draw_quad(GLuint texture)
{
    int width, height;
    glfwGetFramebufferSize(glfwGetCurrentContext(), &width, &height);

    glViewport(0, 0, width, height);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.f, 1.f, 0.f, 1.f, 0.f, 1.f);

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, texture);
    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

    glBegin(GL_QUADS);

    glTexCoord2f(-0.25f, -0.25f);
    glVertex2f(0.f, 0.f);

    glTexCoord2f(1.25f, -0.25f);
    glVertex2f(1.f, 0.f);

    glTexCoord2f(1.25f, 1.25f);
    glVertex2f(1.f, 1.f);

    glTexCoord2f(-0.25f, 1.25f);
    glVertex2f(0.f, 1.f);

    glEnd();
}

Description

我怎么可能,顺序:

  1. 读取渲染的屏幕像素(即全屏图像);
  2. 然后操纵全屏像素。我更喜欢在设备上进行操作,但是复制然后在CPU上进行操作也是可以接受的;
  3. 将经过处理的新全屏像素渲染回来,并在屏幕上显示。
  4. 任何提示都表示赞赏。

0 个答案:

没有答案