1

我正在使用OpenGLES为 Symbian 5th edition 开发一个移动应用程序。
这个应用程序是一个非常标准的 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();

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

我感谢你的时间。

4

1 回答 1

1

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

我会建议诺基亚论坛进行此类查询。

无耻的插头:

Quick Recipes On Symbian OS contains a whole chapter explaining the basics of OpenGL-ES on Symbian OS. The 3D code samples are here.

于 2009-10-14T14:25:11.537 回答