我使用open gl生成Gaussian Parimid,我使用mipmap创建2D纹理,并绑定到FBO的数组,FBO [0] - >基础层次的质地,FBO [1] - > 1级纹理等......
平台:Android OpenGL ES 2.0
运行以下代码时:
gaussV.Use();
glUniform1f(gaussV("mip_level"), 0.0); //some param to shader
glUniform1f(gaussV("delta"), 1.0f / h); // some param to shader
glBindFramebuffer(GL_FRAMEBUFFER, filterFBO_IDs[m]);
draw(gaussV("vPosition")); // draw arrays.
gaussV.UnUse();
如果m == 0,将调用着色器,但如果m> 0,则不会调用着色器程序。
答案 0 :(得分:2)
从opengl es3.0规范(http://www.khronos.org/registry/gles/specs/3.0/es_spec_3.0.2.pdf),我们可以看到新闻功能列表,其中一个是:
ability to attach any mipmap level to a framebuffer object
这意味着在opengl es2.0中,它不支持渲染到特定的纹理级别。
那么如果需要渲染到特定的mipmap级别,如何解决这个问题?
1)创建更多纹理来渲染一个,每个纹理对应一个 一级mipmap,这种方式会创建很多纹理,效率不高。
2)创建一个大的纹理来保存所有级别的mipmap,就像put一样 金字塔从垂直到水平。