当前位置: 首页 > 知识库问答 >
问题:

将模具缓冲区可视化为纹理

松翔
2023-03-14

我试图将模具缓冲区放入纹理中,以便在延迟渲染器中使用。

但是,当我尝试使用glFramebufferTexture2D(GL_FRAMEBUFFER,GL_stencil_ATTACHMENT,GL_texture_2D,textures[stencil],0)将模具缓冲区附加到纹理时 我得到一个混乱的结果,好像FBO没有清除缓冲区。

我不知道是什么问题。我怀疑这是设置模板纹理的问题。。。

//Stencil Texture Initialization

glBindTexture(GL_TEXTURE_2D, textures[stencil]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

glTexImage2D( GL_TEXTURE_2D, 0, GL_STENCIL_INDEX8, 512, 512, 0, GL_STENCIL_INDEX, GL_BYTE, 0);

我的设置中没有任何错误代码,所以我不知道问题出在哪里。

编辑:也许我做得不对。如果有人知道如何将模板缓冲区写入纹理,我真的不在乎我是否编写不同的cod。我只需要一个有效的方法。


共有1个答案

左丘恩
2023-03-14
GL_STENCIL_INDEX8

千万别用这个。如果需要模具位,请始终使用压缩深度/模具图像,如GL_DEPTH24_模具8。您应该将其附加到GL_DEPTH_STENCIL_附件点。

 类似资料:
  • 我正在使用JOGL,但这个问题一般适用于OpenGL。似乎存在类似的问题,但它们要么针对GLSL代码,要么与复制帧缓冲区的内容有关,要么是一般建议-使用帧缓冲区对象,而不是。 我正在做一些阴影映射。如何使用帧缓冲对象将深度通道直接渲染到纹理? 能否请你贴一段初始化纹理和帧缓冲对象的代码,以及渲染场景前初始化一切的代码? 目前,我使用<code>glCopyTexSubImage2D<code>。我

  • 我们接近100人。proto文件,其中每个文件可以定义大约10个IDL结构(如服务或消息)。 有没有一种方法可以可视化它们,包括引用(从一个文件到另一个文件)。例如类似于UML类图。 可能有可配置的可视化Java /C。 引用自https://developers.google.com/protocol-buffers/docs/overview 协议缓冲区现在是谷歌的通用数据语言——在撰写本文时

  • 我做了一个在上面渲染天空盒和粒子的应用程序。我想添加一些效果,我需要使用帧缓冲区来渲染天空盒、粒子颜色、深度和位置以分离纹理。然后我想使用简单的着色器来使用这些纹理中的值并以适当的方式混合它们。我为纹理、帧缓冲区和屏幕四边形(渲染简单的矩形)编写了辅助类,但不幸的是——当我尝试使用它时没有任何渲染。 当绑定帧缓冲区被注释掉时,我的场景如下所示: 修改着色器表明深度和位置值计算正确。因此问题在于纹理

  • 我有一个JSON对象,我正在将它转换成一个,并在这里进行一些处理。稍后,我想将相同的缓冲区数据转换为有效的JSON对象。 我的工作节点V6.9.1 下面是我尝试过的代码,但当我转换回JSON并且无法打开此对象时,我得到了。 所以我试着用检查的方式打印整个物体 如果我试着像数组一样读取它 我试图解析它也抛出SynTaxError:意外令牌o在JSON在位置2 我需要像我创建的那样将其视为真实对象(我

  • 问题内容: 在使用stream2接口之后,如何将node.js缓冲区转换为Readable流? 问题答案: 使用流化器,您可以使用新的流API将字符串和缓冲区转换为可读流。

  • 我如何能转换一个node.js缓冲区到一个可读流以下使用Streum2接口? 我已经找到了这个答案和streambuffers模块,但是这个模块基于stream1接口。