0

我正在使用open gl生成高斯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,会调用shader,如果m>0,就不会调用shader程序。

4

1 回答 1

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,就像把金字塔从垂直到水平。

于 2013-09-12T03:07:27.420 回答