所有 OpenGL 纹理调用中使用的“级别”参数到底是啥?

Posted

技术标签:

【中文标题】所有 OpenGL 纹理调用中使用的“级别”参数到底是啥?【英文标题】:What exactly is the "level" parameter used in all OpenGL texture calls?所有 OpenGL 纹理调用中使用的“级别”参数到底是什么? 【发布时间】:2014-05-30 17:20:33 【问题描述】:

每个关卡都包含它自己的纹理数据吗?将一个纹理复制到另一个纹理时,这些必须如何处理?

【问题讨论】:

【参考方案1】:

这是mipmap级别。

Mipmap 是在纹理成一定角度或距离很远时使用的缩小纹理,而不是主要纹理,用于三线性过滤。 Obligatory wikipedia link.

【讨论】:

谢谢。将整个纹理从一个 GLuint“名称”复制到另一个时,我还需要复制所有 mipmap 级别吗? 你究竟是如何复制它的,它的用途是什么? 基本上,我正在为纹理制作一个 c++ 包装器。在复制构造函数中,我需要将图像数据复制到一个新的“名称”。我正在使用 glCopyImageSubData 执行此操作,它采用 mipmap 级别。我假设有一个“完整”副本,我需要复制所有 mipmap 级别? 我不会费心在纹理对象上实现复制构造函数。它不是很有用。此外,glCopyImageSubData 仅在 OpenGL 4.3+ 中可用,这是相当新的并且限制了您的目标受众。如果你还是想这样做,那么是的,你必须为每个 mipmap 都这样做。 @Ben 随心所欲,但我建议不要浪费时间来实现、测试和记录一个理智的程序员几乎不会使用的功能,并且只能在 17% 的显卡上使用.

以上是关于所有 OpenGL 纹理调用中使用的“级别”参数到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

手把手教会OpenGL之纹理贴图包含纹理载入纹理过滤边界处理纹理参数设置(入门级别案例,棋盘)

OpenGL渲染到纹理透明度问题

将纹理快速加载到 OpenGL 2.0

OpenGL渲染纹理全白

OpenGL纹理级别

OpenGL - 在一个函数中加载多个纹理