opengl-es - 在 OpenGL ES 纹理中查找最小/最大值的最佳方法是什么

标签 opengl-es opengl-es-2.0

我有一个 2D 纹理,我想找到该纹理内最小值的位置 (x,y),知道吗?

平台:OpenGL ES 2.0 Android。

注意:OpenGL ES2.0不支持mipmap渲染。

最佳答案

您可能会考虑利用 mipmap LOD 的分层性质,并将大量点簇的最小值写入较低的 LOD。您可以通过这种方式沿着 mip 链向上找到确切的最低值(和位置);通过扩展,如果您使用双 channel 纹理,您也可以写入最大值并使用它来确定最大值...您当然会增加内存需求,但是最小/最大位置的操作将非常快比较。

这种技术字面上称为最小/最大纹理。它有很多用途,但最常用于阴影环境。而不是进行需要 O (n) 的搜索现在,您可以使用 mipmap 将纹理构建为树状结构,并在 O (log n) 中执行相同的操作GPU 上的时间。您确实必须花费额外的处理来生成最小/最大 LOD,但这是一次性操作。

following link提供了有关最小/最大纹理的更多详细信息,我相信您可以在 Google 上找到更多信息...

关于opengl-es - 在 OpenGL ES 纹理中查找最小/最大值的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19399583/

相关文章:

cocos2d-iphone - Cocos2d 2.0.3 使用未声明的标识符 'glColor4f'

c++ - 如何使用 OpenGL ES2、GLSL、C++ 将模型矩阵数据缓冲到纹理中?

c - glTexImage2D,以随机和偶然的方式,在执行中花费了 800 倍以上

android - OpenGL ES 1.1 每个网格多个纹理

ios 游戏 - GPU 端计算有什么缺点吗?

android - Android上OpenGL-ES如何绘制多条不同颜色的线段

android - GLSL 着色器不会从统一变量渲染颜色

iphone - GLKit 和向纹理添加色调

opengl-es - 跨步在OpenGL | ES中是什么意思

c++ - 具有渲染到纹理 iOS : nothing shown 的 OpenGL ES 2.0 帧缓冲区