问题标签 [stencil-buffer]

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 回答
5574 浏览

textures - 在 Direct3D 中使用模板缓冲区

我正在尝试使用模板缓冲区ID3D11Texture2D将一个纹理的一部分覆盖在另一个纹理上。我计划通过在模板缓冲区上绘制所需的形状然后复制纹理来做到这一点。请推荐一些很好的教程,其中包含 2D 纹理的示例代码,用于学习模板缓冲区的使用。(或这样做的一些替代方式)

0 投票
1 回答
373 浏览

c++ - 使用opengl的阴影体积问题

我无法找出使用阴影体积和模板缓冲区的 shadown 投影的解决方案。问题可以查看: www.dt.fee.unicamp.br/~ricfow/shadowProblem.avi

在另一个视频中: www.dt.fee.unicamp.br/~ricfow/shadowProblemAux.avi 仅绘制了与轮廓相关的面,其中蓝色表示正面,红色表示背面。

可能是什么问题呢?

0 投票
0 回答
552 浏览

opengl - 使用模板缓冲区合并动态阴影

我正在使用 LWJGL 制作一个分屏合作 2D 顶级游戏。我目前正在尝试寻找一种将两个视野与模板缓冲区合并的智能方法。关键是你能够看到其他玩家能够看到的东西。

图片胜于文字。

模板缓冲区

请记住,我只能绘制白色方块和黑色阴影。

我不想在黑色区域内绘制任何东西,因此是模板缓冲区。

在用“1”填充模板缓冲区的同时绘制世界很容易。为玩家绘制视野很容易。找出只有一个玩家可以看到的地方并不容易。

对我来说,这似乎是最后两张图片之间的 OR 操作。然而,只有一个模板缓冲区。由于相对缺乏关于模板缓冲区的文档,我也不确定它是如何工作的。

我也想避免像FBO这样复杂的东西。我很确定有一种简单的方法可以使用模板缓冲区来做到这一点。

有人对此有任何想法吗?

0 投票
2 回答
607 浏览

c++ - opengl 模板缓冲区未初始化为零?

我在 MS WindowsXP 下工作,我的显卡是 itel GMA4500,我的代码:

但是当我检查数据缓冲区时,我可以看到字节不是全为零,那么问题是什么?


是的,我确定我有一个模板缓冲区,在调用 glReadPixels 后,我检查了 glGetError,没有错误。我也试过 memset 用零填充数据缓冲区,但结果没有改变。

0 投票
1 回答
238 浏览

c++ - 阴影体积 - 非流形对象

我对为非流形对象创建阴影体积有疑问,特别是当对象具有悬空面时。

例如:

例子
(来源:www.dt.fee.unicamp.br 上的 ricfow

我们在顶部有一个盒子(棕色)和两个相连的面(白色)。标准的 z-pass 和 z-fail 算法无法产生正确的阴影。我在哪里可以找到理论材料来改进标准算法以应对更复杂的情况(如上所述)?

0 投票
1 回答
1233 浏览

c++ - 从片段着色器内部影响深度或模板缓冲区?

我知道可以通过写入 gl_FragDepth 来控制写入 GLSL 中深度缓冲区的内容,但是可以写入模板缓冲区吗?

另外,我可以从片段着色器中完全取消像素写入,就好像像素没有通过模板或深度测试一样?

谢谢

0 投票
1 回答
2441 浏览

android - OpenGL ES 模板操作

关于文章OpenGL 剪辑中讨论的问题,出现了一个新问题。

我正在为基于节点的 2D 场景图实现裁剪。每当剪裁框轴对齐时,我都会使用 glScissor ,就像在 OpenGL 剪裁中提出的那样。我已经成功实现了轴对齐框的节点裁剪。

事实证明,每个节点都必须将其裁剪矩形与其使用裁剪的祖先相交。(如果兄弟姐妹与祖先的剪切框重叠,这是必要的)。

必须使用模板缓冲区来实现与非轴对齐矩形相交的机制。我开始在OpenGL 剪辑中实施建议的解决方案,但是在孩子们的剪辑矩形与他们的祖先重叠的问题上遇到了问题。

现在,模板剪裁只需一个剪裁盒即可完美运行。但是,如果孩子或孙子与祖先相交,算法会失败,因为此处需要 2 个相关矩形的交集(如在轴对齐版本中)作为掩码,而不是孩子的完整矩形。

我已经想到了以下算法:

最上面的节点写入以计数器值 1 开始,并将其填充为 1 的剪切矩形绘制到模板缓冲区中,并根据 1 渲染它的子模板测试。每个也打开了剪切的兄弟节点通过1 添加到它来绘制它的边界矩形模板缓冲区,然后针对 2 进行测试,依此类推。现在,当剪裁矩形的兄弟姐妹与祖先剪裁矩形重叠时,它们重叠的区域将被 2 填充,在对 2 进行测试时提供完美的剪裁。该算法可以扩展到最多 255 个嵌套剪裁节点。

我的问题来了:

我如何执行对模板缓冲区的渲染,而不是写入 1,而是在执行渲染时将 1 添加到当前模板缓冲区值。

这是我用来准备渲染到模板缓冲区的代码:

我正在寻找一种设置,它将模板缓冲区的当前值增加 ref 的值,而不是将 ref 写入缓冲区。

有人可以帮我吗?

0 投票
2 回答
8746 浏览

textures - 如何在 OpenGL-ES 2.0 中使用纹理(图像)创建模板缓冲区

我可以在 OpenGL 2.0 中使用纹理(图像)准备 Stencil,以便图像的某些部分是透明的,因此它将按原样传输
到 Stencil 缓冲区,然后使用此模板缓冲区进行进一步绘图。


由 datenwolf 编辑以在答案中解释 OPs 问题更新:

通过@InfiniteLoop:

@datenwolf 非常感谢您的回复,但没有成功:(这是我的代码

请阐明我迫切需要:(再次感谢。

0 投票
2 回答
1129 浏览

opengl - glStencilFunc 由于某种原因无法工作:(

无论我尝试什么,粒子在地球外部渲染而不会触及地球内部,我希望它反过来!无论我更改了哪些参数(尝试了 2 小时),它的粒子要么在外部渲染良好,但在内部不渲染,或者在外部和内部都渲染粒子。我对此感到非常头疼,有人可以帮我解决这个错误。我使用 1 位作为模板缓冲区。GDEbugger 显示模板缓冲区工作正常。

0 投票
1 回答
2219 浏览

ios - iOS5 是否同时支持 GL_STENCIL_INDEX 和 GL_STENCIL_INDEX8?

使用以下代码:

有了GL_STENCIL_INDEX,我得到了GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT错误。有了GL_STENCIL_INDEX8,我得到了GL_FRAMEBUFFER_UNSUPPORTED错误。两者都是由最后一个 glFramebufferRenderbuffer() 函数引起的,该函数应该将模板缓冲区绑定到 FBO。

此外,当我检查GL_RENDERBUFFER_STENCIL_SIZE值时,我得到了正确的值 (8) GL_STENCIL_INDEX8,但我得到了 0 GL_STENCIL_INDEX

有了这个,我就无法获得带有模板缓冲区的功能完整的 FBO。GL_STENCIL_INDEX是不是因为 这里应该使用哪一个?