代码之家  ›  专栏  ›  技术社区  ›  Karl Chris Geirman

如何在iPhone上的OpenGL ES中设置/获取纹理上的像素?

  •  4
  • Karl Chris Geirman  · 技术社区  · 15 年前

    我想用谷歌搜索我在标题中提到的内容,但不知何故我找不到。这不应该那么难吧?

    我要寻找的是一种在iPhone上访问OpenGL ES纹理的方法,以及一种使用它获取/设置像素的方法。我要找的OpenGL ES函数是什么?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Felixs    15 年前

    我不知道如何设置单个像素,但是glreadPixels可以从帧缓冲区读取一块像素。( http://www.khronos.org/opengles/sdk/docs/man/glReadPixels.xml )谷歌搜索的问题可能是因为纹理像素经常被缩短为“texel”。

        2
  •  6
  •   Stephen Eilert    15 年前

    在OpenGLES能够看到您的纹理之前,您应该已经将其加载到内存中,生成纹理名称(glgentextures),并将其绑定(glbindtexture)。你的纹理数据只是内存中的一个大数组。

    因此,如果要更改单个texel,可以在内存中操作它,然后再次绑定它。这种方法通常用于程序纹理生成。网上有很多关于它的可用资源,例如: http://www.blumtnwerx.com/blog/2009/06/opengl-es-texture-mapping-for-iphone-oolong-powervr/

    虽然glreadpixels是可用的,但是很少有情况需要将其用于交互式应用程序(屏幕捕获会浮现在脑海中)。它绝对会破坏性能。仍然不会返回原始纹理,而是返回一个帧缓冲区块。

    我不知道你想要什么样的效果。但是,如果您的目标是支持像素遮影器的设备,那么定制像素遮影器可能会满足您的需要。

    当然,我的工作假设你不是指屏幕坐标中的像素。