问题标签 [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 回答
1079 浏览

opengl - OpenGL,FBO的模板缓冲区不起作用?

我尝试在 OpenGL 中使用 FBO 的模板缓冲区,但我无法让它工作。我为深度和模板目标绑定了一个 depth24_stencil8 纹理到 FBO。作为一个简单的测试,我尝试了:

当我使用 GL_NEVER 时,根本不应该渲染任何东西,但我可以看到三角形。这就像根本没有模板,但我不明白为什么。在没有 FBO 的情况下尝试此代码有效,因此我认为我正确使用了模板功能。我不知道如何解决这个问题。是否有人已经在 FBO 中使用了模板?

0 投票
1 回答
515 浏览

ios - 在 iO 中使用 Open GL 1.0 模板缓冲区进行屏蔽的问题

我一直在努力寻找在 iO 上使用 OPEN GL 1.0 中的模板缓冲区进行简单屏蔽的解决方案。

我绘制背景,然后使用 glPushMatrix 在其上绘制一个使用 drawFrame 绘制的框架。

我的框架由 VideoFrameTexture 组成,我尝试使用模板缓冲区使用 maskTexture 进行屏蔽。我的目标是仅将 videoFrameTexture 的一部分(由我的蒙版的白色区域定义,对应于圆形)绘制到背景上。

我使用以下代码,但未考虑蒙版图像。这是一个黑色和白色的png。

我使用以下代码绘制视图:

0 投票
1 回答
3230 浏览

opengl - opengl 模板缓冲区 - 不太好用

目前我正在绘制背景,然后在模板缓冲区中绘制一个透明三角形,然后在未绘制三角形的地方绘制一个蓝色正方形。我希望效果是一个蓝色的正方形,带有一个三角形的孔,露出背景。但我得到的只是一个黑色三角形,覆盖在其他所有东西上。我认为我在正方形上得到了想要的效果,但模板也被应用于背景。

我的问题是如何调整以下代码以允许通过正方形中的三角形孔显示背景?

0 投票
1 回答
1052 浏览

android - Android OpenGL ES 1.1:从模板缓冲区读取

使用 Android OpenGL ES 1.1 (HTC Desire)...

我一般遇到的问题是这样的:

我在复杂的场景中渲染了各种 3D 对象。我想检查用户是否单击了特定对象。该对象可能被部分隐藏,因此可能在场景中显示为几乎任何形状。如果用户单击场景中可见的对象的一部分,我只想允许“选择”对象。这意味着我不能对对象交集使用基于矢量的计算,因为这些计算不能轻易考虑到对象的隐藏区域。

于是我想出了一个主意……

我设置了模板缓冲区,以便在对象可见的任何地方,模板缓冲区都填充 1,而模板缓冲区中的其他任何地方都为 0。当用户单击场景中的特定像素时,我只需要检查模板缓冲区即可查看它是否包含 1 或 0,指示对象是否被单击。

这在 PC 上完美运行,但在 Android OpenGL ES 1.1 上,我似乎无法使用 glReadPixels() 从模板缓冲区读取数据,因为不支持 GL_STENCIL_INDEX。

有谁知道是否有办法从模板缓冲区中读取这个 0/1?或者谁能​​想到一个更好的算法来确定我的对象是否被点击?

非常感谢

0 投票
1 回答
1502 浏览

c# - OpenTK 模板缓冲区

我是opengl的新手,我正在努力让stencilbuffer为一个简单的案例工作;我有两种纹理,一种是位图,另一种是“蒙版”,我试图用它来隐藏位图中的某些部分。

我似乎无法让它工作,当我尝试设置模板格式以使用 GL.TexImage2D 创建我的模板纹理时,我得到一个无效的枚举,当我尝试为 fbo 将模板扩展附加到 FramebufferTexture2D 时,我绘制了我的掩码:

对于简单的 2d 案例(使用纹理掩盖纹理),我似乎找不到任何示例来证明这一点。

编辑:此处更新版本:http: //pastebin.com/iuur2UTM

0 投票
1 回答
1656 浏览

opengl - 在 GL 中组合多个模板

我想在 OpenGL 中设置多个模板,然后绘制它们的多个组合。

例如:我有两个这样的矩形模板:

多个区域

然后我想画:

  1. 任何地方
  2. 左矩形(蓝色+紫色)
  3. 右矩形(紫色+红色)
  4. 中间矩形(紫色)
  5. 整个彩色区域(蓝色+紫色+红色)

我发现可以在模板缓冲区的不同位中声明多个模板,但我不知道如何。我该如何设置glStencilOpglStencilFunc让它工作?

或者我可以(应该)使用glScissor它吗?

0 投票
1 回答
754 浏览

text - 使用模板缓冲区绘制文本

我设置了模板缓冲区,因此只有部分屏幕受到绘图调用的影响。具体来说,我想画一个小区域。它将成为一个 UI,因此绘制的所有内容都将是某种 2D 精灵。使用 sprite 对象效果很好。该区域之外的精灵被切断。但是,当我添加文本时,之后绘制的所有内容和文本本身都不会被切断。PIX 显示,一旦调用绘制文本,就会设置一个新的 DepthStencilState 并关闭模板缓冲区。文本由负责绘制其他精灵的同一精灵对象绘制。

绘图是通过 SlimDX.Direct3D10.Font.Draw 方法执行的。

有没有办法强制 DirectX 不改变状态对象?我使用 SlimDX,但根据它的代码,它似乎不负责状态变化。

尼科

0 投票
3 回答
1687 浏览

opengl - 将深度/模板缓冲区附加到帧缓冲区时出错

我通过向 OpenGL 发出这一系列命令来创建深度/模板缓冲区:

然后我尝试将它附加到帧缓冲区

但是调用glCheckFramebufferStatusEXT返回GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT。如果我不附加深度模板缓冲区,那么这个测试就很好(但显然显示器被搞砸了)。

你们有什么线索吗?

编辑:更改:我已将纹理创建简化为基本纹理的格式。

0 投票
1 回答
1875 浏览

opengl - OpenGL 中使用 Stencil Buffer 的门户 - 如何避免在门户前面绘制东西?

我正在尝试通过模板缓冲区使用 OpenGL 来实现门户。该技术对我来说似乎很简单:将门户渲染到模板缓冲区,渲染从目标门户后面的虚拟相机观看的场景(仅限于模板缓冲区),将门户渲染到深度缓冲区,渲染正常视图。

但是,当我这样做时,虚拟相机和目标门户之间的对象将被绘制在门户前面,从而导致图像错误(因为我只想绘制可以通过门户看到的对象 -那些在门户“后面”的)。如果我直视门户,我可以简单地使用近剪裁平面,但对于似乎不起作用的任意视图。

为了更好地解释,这是我的问题的图:

传送门问题绘图
(来源:42prozent.de

0 投票
0 回答
474 浏览

opengl - opengl 绘制深度缓冲图像

在 openGL 上阅读时,我发现了一些我无法理解的东西。这是关于这个链接 方法描述的。我一直在努力实现他们所说的,但我没有掌握一些要素。假设我们有 3 张图像 i=0..2 图像[i][width*height*4](考虑 rgba8 图像)和每个图像对应的深度浮点深度[i][width*height]。我将如何实施链接中描述的技术?如果我有压缩纹理而不是图像,我也很感兴趣,我还能使用那里描述的技术吗?编辑:我试图将解释放入代码中,但到目前为止我只能设法提出这个问题,因为我无法理解该过程