Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es 在OpenGL ES纹理中查找最小/最大值的最佳方法是什么_Opengl Es_Opengl Es 2.0 - Fatal编程技术网

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

Opengl es 在OpenGL ES纹理中查找最小/最大值的最佳方法是什么,opengl-es,opengl-es-2.0,Opengl Es,Opengl Es 2.0,我有一个2D纹理,我想找到这个纹理中最小值的位置(x,y),知道吗 平台:OpenGLES2.0Android 注意:OpenGL ES2.0不支持MIPMAP渲染。 < P>您可以考虑利用mipmap LODs的层次性质,并将一大簇点的最小值写入更低的LODs。你可以沿着mip链往上走,通过这种方式找到确切的最低值(和位置);通过扩展,如果您使用双通道纹理,您也可以写入最大值,并将其用于最大确定。。。当然,您会增加内存需求,但相比之下,min/max location的操作速度会非常快 这种技

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

平台:OpenGLES2.0Android


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

< P>您可以考虑利用mipmap LODs的层次性质,并将一大簇点的最小值写入更低的LODs。你可以沿着mip链往上走,通过这种方式找到确切的最低值(和位置);通过扩展,如果您使用双通道纹理,您也可以写入最大值,并将其用于最大确定。。。当然,您会增加内存需求,但相比之下,min/max location的操作速度会非常快

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


提供了更多关于最小/最大纹理的细节,我相信您可以在Google上找到更多…

并迭代所有像素以找到最小值。您可以将映像分割成几个块,并在不同的线程中处理它们,以提高多核CPU上的性能。那么,它是哪一个?OpenGL还是OpenGL ES?@NicoSchertler:在这个时代,我会犹豫是否要将图像处理工作转移到CPU上。这是一个非常容易在任何具有片段着色器功能的D3D9类硬件上完成的任务,如果您正确地构造数据(例如,最小/最大纹理)。@NicoSchertler但是如果纹理很大,从GPU到CPU的传输需要很长时间@genpfault OpenGL ES2.0,因此它不支持mipmap谢谢您的回答,但该平台是Android上的OpenGL ES2.0,因此它不支持mipmap LOD。嗯,你不一定要用mipmap来做这个。mipmap只是将一般数据结构合并到单个纹理中的一种简便方法。通过计算每个LOD的纹理坐标(这是您的最佳选择)或使用单独的纹理对象,可以完成相同的任务。这里要做的主要事情是,您需要使用一个加速过程的数据结构,在GLES2.0类硬件上的片段着色器中,任何数据结构都必须相对于纹理来实现;然后你必须修改算法来处理像纹理坐标这样的东西。几乎所有的东西,从一般的数据结构,一直到链表(依赖的纹理查找),都可以使用纹理来实现。你只要聪明一点:)