OpenGL ES 3:glGenerateMipmap 几何约束
OpenGL ES 3: glGenerateMipmap geometric constraints
我正在为 android 开发移动 OpenGL 应用程序,使用 OpenGL ES3.x 处理图形。
我想使用 glGenerateMipmap
函数,但我感到不自在,因为我记得,至少在以前的 OpenGL 版本中,纹理的大小有一些几何限制(正方形, n-pot textures 如果我没记错的话)。
参考页面 glGenerateMipmap for OpenGL ES3 不再报告类似的内容,在几个设备上进行的粗略测试似乎证实了该信息。
尽管如此,考虑到 OpenGL ES3 是多么新(并考虑到一些移动 OpenGL 实现的质量......),如果有第一手经验的人确认使用它也可以,我会感到更加放心在现实世界中.
问题归结为:
- OpenGL ES 3 上的
glGenerateMipmap
对纹理的几何形状没有限制是真的吗?
- 如果是这样,在野外的非方形、非 n-pot 纹理上使用它是否安全?
谢谢!
ES 3.0 正式取消了对两个纹理的非幂的限制。 ES 2.0 规范中的相应语言在 ES 3.0 规范中无处可寻。 E.1部分列出了ES 3.0相对于ES 2.0的新特性,也明确提到了这一点:
non-power-of-two textures with full wrap mode support and mipmapping
所以是的,您可以安全地在 NPOT 纹理上使用 glGenerateMipmap()
。有一个微妙但重要的限制:
If the level_base array was not specified with an unsized internal format from table3.3 or a sized internal format that is both color-renderable and texture-filterable according to table 3.13, an INVALID_OPERATION error is generated.
这意味着例如 glGenerateMipmap()
不支持任何整数格式(因为它们不可纹理过滤),也不支持任何浮点格式(因为它们不可渲染颜色)。
我认为正方形从来都不是对 OpenGL 纹理的真正限制。它肯定不在 ES 2.0 中,也不在 ES 3.0 中。
我正在为 android 开发移动 OpenGL 应用程序,使用 OpenGL ES3.x 处理图形。
我想使用 glGenerateMipmap
函数,但我感到不自在,因为我记得,至少在以前的 OpenGL 版本中,纹理的大小有一些几何限制(正方形, n-pot textures 如果我没记错的话)。
参考页面 glGenerateMipmap for OpenGL ES3 不再报告类似的内容,在几个设备上进行的粗略测试似乎证实了该信息。
尽管如此,考虑到 OpenGL ES3 是多么新(并考虑到一些移动 OpenGL 实现的质量......),如果有第一手经验的人确认使用它也可以,我会感到更加放心在现实世界中.
问题归结为:
- OpenGL ES 3 上的
glGenerateMipmap
对纹理的几何形状没有限制是真的吗? - 如果是这样,在野外的非方形、非 n-pot 纹理上使用它是否安全?
谢谢!
ES 3.0 正式取消了对两个纹理的非幂的限制。 ES 2.0 规范中的相应语言在 ES 3.0 规范中无处可寻。 E.1部分列出了ES 3.0相对于ES 2.0的新特性,也明确提到了这一点:
non-power-of-two textures with full wrap mode support and mipmapping
所以是的,您可以安全地在 NPOT 纹理上使用 glGenerateMipmap()
。有一个微妙但重要的限制:
If the level_base array was not specified with an unsized internal format from table3.3 or a sized internal format that is both color-renderable and texture-filterable according to table 3.13, an INVALID_OPERATION error is generated.
这意味着例如 glGenerateMipmap()
不支持任何整数格式(因为它们不可纹理过滤),也不支持任何浮点格式(因为它们不可渲染颜色)。
我认为正方形从来都不是对 OpenGL 纹理的真正限制。它肯定不在 ES 2.0 中,也不在 ES 3.0 中。