【问题标题】:How to Draw pixel data taken from the backbuffer back to itself?如何将从后台缓冲区获取的像素数据绘制回自身?
【发布时间】:2010-12-06 10:09:09
【问题描述】:

我正在使用 OpenGLES 为 Symbian 第 5 版开发一个移动应用程序。
这个应用程序是一个非常标准的 2D 应用程序,我没有使用 DepthBuffer。

我需要抓取显示的快照,然后将相同的快照绘制回后台缓冲区。

我正在使用glReadPixels((GLint)0, (GLint)0, (GLint)nWidth-1, (GLint)nHeight-1, GL_RGB, GL_UNSIGNED_BYTE, m_pPixelData)

为了获取我需要的像素数据,但我对 OpenGLES 比较陌生,我不知道如何将数据绘制回后台缓冲区。 (在 OpenGL 中很容易使用 DrawPixels..)

我读到我应该从数据中生成纹理,所以我做到了。 但是现在我不确定如何绘制这个纹理。

我需要将其绘制为矩形元素的纹理吗?如果是这样,我应该如何定义这个矩形? (坐标对我来说没有意义..)

显示尺寸为 480x640,这是我要用于绘制矩形的代码:

    glEnable(GL_TEXTURE_2D);
    //displayTex is my texture built out of the pixel data
    glBindTexture(GL_TEXTURE_2D, m_pESSharedData->displayTex);

    //Bottom
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    glBegin(GL_QUADS);
    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(-2.5f, -2.5f, 2.5f);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(2.5f, -2.5f, 2.5f);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(2.5f, -2.5f, -2.5f);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(-2.5f, -2.5f, -2.5f);

    glEnd();

请注意,上面的代码是我在此过程中学到的,我认为这是我应该做的事情的大纲。随时让我离开这条赛道。 :)

感谢您的宝贵时间。

【问题讨论】:

  • 如果您仍在检查您的问题,我会引导您完成。我对您的平台了解不多,无法提供帮助,但我可以在 OpenGL 方面为您提供帮助。您对坐标系(如投影、模型视图等)的熟悉程度如何?
  • 嘿 GMan 和 10q 给你答复,我已经阅读了一些教程,并且遇到了投影、模型视图等。所以我知道它的基础知识。你能在OpenGL ES下帮助定义这个矩形/绑定纹理吗?

标签: c++ opengl-es symbian texture2d


【解决方案1】:

您首先需要确保Series60第5版的OpenGL-ES版本可以处理高度和宽度不是2的幂的纹理。

我会建议 forum nokia 进行此类查询。

无耻的塞:

Quick Recipes On Symbian OS 包含一整章解释 OpenGL-ES 在 Symbian OS 上的基础知识。 3D 代码示例为here

【讨论】:

  • 宽度/高度为 2 次方的表面是缺失的环节。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2014-04-23
  • 2015-07-02
  • 1970-01-01
  • 2012-10-19
相关资源
最近更新 更多