问题标签 [mipmaps]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
9932 浏览

opengl - 对 OpenGL 纹理使用自己的 mipmap 创建算法是否有意义?

我想知道如果我使用自己的算法而不是内置的自动算法来预生成它们,纹理 mipmap 的质量是否会更好。我可能会使用缓慢但漂亮的算法,例如 Lanczos 重采样。

是否有意义?我会在现代显卡上获得任何质量提升吗?

0 投票
1 回答
1312 浏览

opengl - OpenGL - 从小于该屏幕的屏幕复制纹理

我正在尝试将屏幕捕捉到分辨率低于屏幕本身的纹理(以渲染回屏幕并创建模糊/绽放效果),但效果不太好。我知道可以使用 mipmap 来执行此操作,但我无法让正确的命令序列起作用。

我当前的代码:

0 投票
1 回答
365 浏览

opengl - OpenGL mipmap 被剪掉了?

是否可以删除最后 3 个 miplevel,因此它不会使用比 max-3 更高的 miplevel?

我有高 miplevel 的问题,无论我填充多少纹理,它们看起来都非常糟糕。

0 投票
2 回答
2153 浏览

opengl - GPU 手动 Mipmap 生成 [OpenGL 2.x]

我想使用特定的自定义算法为某些可渲染纹理(R16F 和 RGBA16F)生成 mipmap。

使用 glGenerateMipmapEXT() 预先启用所有需要的纹理的 mipmap。

到目前为止最大的问题是渲染到 1+ mipmap 级别。 更准确地说,这就像一个魅力:

但这在检查 fbo 状态时给了我一个 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT

代码的所有区别在于将纹理附加到 FBO 的 lod 级别参数。

经过大量的发烧头抓挠后,我仍然无法正常工作。因此,非常感谢任何答案。

[注意:目标平台是带有 FBO 扩展的 OpenGL 2.x]

0 投票
2 回答
1151 浏览

c - OpenGL广告牌插值问题

我有一个贴有纹理的广告牌四边形。

这基本上是一些具有透明度的文本。

从摄像机的角度看,广告牌前后浮动。

随着广告牌移开(并且看起来更小),在实际纹理上有笔触边框的文本边缘周围会出现闪烁效果。

我认为这是因为需要插值,因为通常为 X 像素宽的图像现在仅显示为 X 的百分比,并且需要将一些像素合并在一起。我猜它是在做最近的邻居还是什么?谁能指出我正确的方向来控制opengl设置,我猜有一些方法可以通过调整处理纹理的方法来防止这种效果发生?

我认为它与以下内容有关:

但是当我尝试为 MIN 过滤器设置它并启用 mip 映射时,我的纹理变得非常块状和模糊......

我也试过:

这显然是 MIN 过滤器的三次过滤,但我的图像在显示时非常模糊。(看起来它是一个非常低分辨率的纹理)任何想法我做错了什么?

更多代码:

纹理为 512 x 512。

使用 MIN 滤镜时的模糊度示例:

模糊的广告牌

当仅将 GL_NEAREST 用于最小过滤器时,会更锐利但令人讨厌的双线性以及在动画收缩时如上所述的闪烁:

GL_NEAREST

0 投票
2 回答
6637 浏览

opengl - OpenGL Mipmapping:OpenGL 如何决定地图级别?

我无法在 OpenGL 中实现 mipmapping。我正在使用 OpenFrameworks 并修改了 ofTexture 类以支持 mipmap 的创建和渲染。

以下代码是该类的原始纹理创建代码(为清楚起见稍作修改):

这是我的支持 mipmap 的版本:

该代码不会产生错误(gluBuild2DMipmaps 返回“0”)并且纹理渲染没有问题。但是,我没有看到任何区别。

我渲染的场景由 z=0 处的“扁平方形瓷砖”组成。它基本上是一个 2D 场景。在绘制瓷砖之前,我使用“glScale()”放大和缩小。当我缩小时,平铺纹理的像素开始“跳舞”,表明(据我所知)未过滤的纹理查找。请参阅:http ://www.youtube.com/watch?v= b_As2Np3m8A 25 秒。

我的问题是:由于我不移动相机位置,而只使用整个场景的缩放,这是否意味着 OpenGL 无法决定适当的 mipmap 级别并使用完整的纹理大小(级别 0)?

保罗

0 投票
4 回答
1737 浏览

opengl - 如何在 OpenGL 中检查 mip-map 的可用性?

最近我遇到了一个问题,即我的 OpenGL 程序无法在一台使用了 2 年、配备 nVidia Quadro 140 卡的联想笔记本电脑上正确渲染纹理。它运行 OpenGL 2.1.2 和 GLSL 1.20,但是当我打开 mip-mapping 时,整个屏幕都是黑色的,没有任何警告或错误。

这是我的纹理过滤器代码:

经过 40 分钟的摆弄,我发现 mip-mapping 是问题所在。关闭它修复它:

我得到了很多别名,但至少程序是可见的并且运行良好。

最后,两个问题:

  1. 除了检查 OpenGL 版本之外,检查机器上是否可以使用 mip-mapping 的最佳或标准方法是什么?
  2. 如果 mip-mapping 不可用,避免混叠的最佳解决方法是什么?

编辑:

这是我真正想要的问题:

您如何以编程方式检查平台上是否可用 mip-mapping?

0 投票
1 回答
4088 浏览

opengl - 模糊 OpenGL 中的深度缓冲区 - 如何在片段着色器中访问 mipmap 级别?

我试图通过在片段着色器中模糊和混合 mipmap 级别来模糊深度纹理。

我有两个帧缓冲区对象:
1)附加了深度渲染对象的颜色帧缓冲区​​。
2) 附加了深度纹理的 z 帧缓冲区。

一旦我将场景渲染到颜色帧缓冲区​​对象,我就可以对深度缓冲区对象进行 blit,并且可以成功渲染它(输出是 GL_LUMINANCE 深度纹理)。

我可以通过在绘制深度缓冲区之前选择它来成功访问任何给定的 mipmap 级别,例如,我可以渲染 mipmap 级别 3,如下所示:

作为替代方案,我想将偏差参数添加到 texture2D() GLSL 函数,或者使用 texture2DLod() 并使用单个纹理采样器进行操作,但是每当我选择超过 0 的级别时,mipmap 似乎没有'未生成:

我不确定 mipmapping 如何与 glBlitFramebuffer() 一起工作,但我的问题是设置程序以使对 texture2D/texture2DLod 的调用给出预期结果的正确方法是什么?

谢谢,丹尼斯

0 投票
1 回答
867 浏览

opengl-es - GL:自动生成一些(但不是全部)mipmap 级别?

我有一个纹理,我想对两个或三个最大的 mipmap 级别进行相对精细的控制,但是在较小的尺寸下,我很高兴 GL 根据我最小的一个为我生成 mipmap上传到 1x1。这可能吗?FWIW,我在带有 GL ES 1.1 的 iPhone OS 上使用这个。

我尝试启用GL_GENERATE_MIPMAP,同时上传 128x128 和 64x64,但这似乎会导致各种尺寸的颜色(白色四边形)变得愚蠢。

有没有办法做到这一点?或者如果我要提供多个关卡,我必须预先生成所有关卡吗?

谢谢。

0 投票
1 回答
2782 浏览

c# - 创建和使用我自己的纹理图集的 mipmap

我目前正在使用自动 mipmap 生成(C# + OpenTK):

我使用的纹理平铺成 16px² 的块。所以我的问题是:

  • 是否可以使用不会缩小到 1x1 的 mipmap?
  • 创建一个不会将块“模糊”成另一个块的 mipmap 的最佳方法是什么?