问题标签 [multisampling]

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 投票
1 回答
1006 浏览

graphics - 在 3D 图形中,为什么不经常使用纹理来实现抗锯齿?

通常,使用诸如超级采样或多重采样之类的技术来生成高保真图像。

我最近一直在使用 CSS3 3D 处理移动设备,这个技巧在获得四边形的高质量非锯齿边缘方面做得非常出色。

这个技巧的工作方式是四边形的纹理在每个维度上获得两个额外的像素,在边界外形成一个透明的一个像素宽的轮廓。由于纹理采样插值,只要变换不会使相机过于靠近边缘,效果与预过滤抗锯齿渲染方法没有什么不同。

例如,采用这种方法渲染 3D 模型的概念和技术限制是什么?

我想我已经有一点可以排除在一般情况下使用这种技巧。当几何图形不是矩形时,它对减少锯齿没有任何作用:对于带有 CSS3 的 HTML5,具有透明 1px 轮廓边框的结果是平滑的,这取决于这些元素是矩形的,以便它们整齐地光栅化成像素网格。

0 投票
0 回答
588 浏览

opengl - 具有非标准化纹理格式的 glTexImage2DMultisample

我在使用非标准化的内部格式(例如GL_RGBA32UI, GL_RGBA32I. 这是我的代码:

手动标准化片段着色器中的纹理数据:对于GL_RGBA16UIfactor = 65535

使用此代码,我将获得整个几何图形的白色纹理。但是,它适用于标准化纹理格式。在未归一化纹理的情况下,写入帧缓冲区的正确方法是什么?

0 投票
1 回答
79 浏览

opengl - 检索驱动程序分配的样本数

我正在开发使用多重采样纹理的应用程序。现在,我想检索驱动程序分配的实际样本数。例如,当我的应用程序要求 1X 多重采样纹理时,驱动程序合法地分配了 2X 多重采样纹理,我如何才能检索驱动程序合法分配的这个数字?我用 glGet 搜索了相应的参数,但没有找到。

0 投票
2 回答
851 浏览

ios - iPad OpenGL ES 极慢 glResolveMultisampleFramebufferAPPLE()

我正在使用 OpenGL ES 分析器。它表明调用 glResolveMultisampleFramebufferAPPLE() 需要大约 90% 的运行时间。这是典型的,还是我的代码效率低下?这是我的绘图代码:

场景很复杂,每帧渲染超过一百万个三角形。我认为我的慢帧速率(10 fps)是由于绘制调用 - 而不是多重采样。有什么想法吗?

0 投票
0 回答
308 浏览

opengl - 如何对 FBOS 进行多重采样

注意:我正在使用 LWJGL。

这是我创建新 FBO 的代码:

这是我将 FBO 绘制到屏幕上的方法:

基本上,我使用 out[2] 作为该函数的参数。

现在,我如何在这里应用多重采样?我真的不喜欢我得到的结果的锯齿状外观。我想在绘制 FBO 时对它进行多个样本。我很乐意将代码写出来,但我想一个教程的链接或其他东西也很好。

0 投票
2 回答
1161 浏览

ios - 带有多重采样的 iOS 上的 glReadPixels

我正在尝试通过多重采样从帧缓冲区中获取像素。它只返回零。我确实按照此处此处的建议调用 glResolveMultisampleFramebufferAPPLE ,但我无法弄清楚我的情况是什么问题。

首先,我创建了带有颜色附件的非多重采样帧缓冲区:

然后创建带有颜色和深度附件的多样本帧缓冲区:

然后清除帧缓冲区:

做我的绘图(这是 Cocos3D 绘图代码):

然后解析缓冲区:

然后全为零:

我跳过了两次 gl 检查创建帧缓冲区是否成功,因为它们创建成功。我的代码中的错误在哪里?

0 投票
1 回答
655 浏览

opengl - 为什么获取多重采样纹理需要整数 UV 坐标

在对多采样纹理进行采样时,我们必须使用整数坐标,即

代替

为什么我们需要映射到每个纹素的精确整数坐标?为什么我的 UV 坐标不能在 0.0 到 1.0 之间浮动。我猜这与多重采样纹理存储在内存中的方式有​​关。但整个想法对我来说有点模糊。

我在这里看到了一个类似的问题:Multisample texture sampling,但这不是我想要的。

0 投票
1 回答
872 浏览

opengl - 我如何从多采样纹理中获取超出样本数量的纹素

假设我创建了一个包含 8 个样本的多重采样纹理。

我的片段着色器是

这工作正常。但是,如果我将上面的 for 循环替换为

这仍然有效。(通过作品,我的意思是我仍然得到正确的图像)

为什么?OpenGL 不应该产生一个无效的操作错误。

同样,即使纹理有 8 个样本,如果 i = 9,我仍然可以获取第 9 个样本?对我来说听起来不对。片段着色器应该在运行时失败。

0 投票
1 回答
695 浏览

opengl - 用于抗锯齿的 glXChooseFBConfig() 设置?

根据这篇文章,据说

要使用 XLib 请求具有多重采样的视觉效果,请使用 glXChooseFBConfig() 列表中的这两个属性:

GLX_SAMPLE_BUFFERS - 它的值应该是 True。这是一个开/关切换。
GLX_SAMPLES - 样本数。

其中,根据 opengl.org 中 Multisampling 部分的 wiki,glXChooseFBConfig() 确实接受这些属性。但是,此处的 SDK 中似乎没有指定 GLX_SAMPLE_BUFFERS/GLX_SAMPLES 。你可能知道为什么吗?

0 投票
1 回答
1480 浏览

opengl - 附加到帧缓冲区的 OpenGL 多重采样整数纹理无法正确解析

因此,我使用了一个多渲染目标帧缓冲区,其中第一个颜色附件是颜色纹理(RGBA8),而第二个绘制缓冲区(颜色附件 1)是索引纹理(R32UI)。

两种纹理都是多重采样的,我想在渲染完成后将它们下载到 CPU 上。虽然,当我将多样本 FBO 转换为单样本 FBO 时,返回的索引纹理数据由全零组成,而颜色纹理被正确解析。

我使用 NEARST 标志是因为,实际上整数纹理似乎不适用于 LINEAR 插值。

我用来下载图像的代码在此处列出。

如果我禁用多重采样 FBO,从而避免调用 gl::BlitFramebuffer() 函数,一切正常。

我没有看到任何文档说整数纹理可以进行多重采样,但即使如此,我也不确定它们是否有意义。

任何线索我可能会误会?