Javascript WebGL中使用的模具索引常量在哪里?
在中,我注意到有一个常数Javascript WebGL中使用的模具索引常量在哪里?,javascript,opengl-es,webgl,Javascript,Opengl Es,Webgl,在中,我注意到有一个常数const GLenum STENCIL_INDEX=0x1901并且想知道它是如何使用的。我一直尝试将其用于纹理或渲染缓冲区,尽管我尝试的组合都不起作用。例如,在下面的示例中,我尝试使用STENCIL_INDEX而不是STENCIL_INDEX8作为渲染缓冲区,或者调用texImage2D,将STENCIL_INDEX8作为内部格式,将STENCIL_INDEX作为格式 在WebGL 1或2中(如果需要,可以启用任何扩展),我想知道常量STENCIL_INDEX可以在纹
const GLenum STENCIL_INDEX=0x1901代码>并且想知道它是如何使用的。我一直尝试将其用于纹理或渲染缓冲区,尽管我尝试的组合都不起作用。例如,在下面的示例中,我尝试使用STENCIL_INDEX
而不是STENCIL_INDEX8
作为渲染缓冲区,或者调用texImage2D
,将STENCIL_INDEX8
作为内部格式,将STENCIL_INDEX
作为格式
在WebGL 1或2中(如果需要,可以启用任何扩展),我想知道常量STENCIL_INDEX
可以在纹理、渲染缓冲区或某些附件配置中使用。即使这是特定于硬件的,我仍然有兴趣知道它是如何使用的
例如,我很好奇如何修改下面的代码以使用STENCIL\u INDEX
(而不是STENCIL\u INDEX8
——请注意,这个常量已经在renderbuffer中使用):
const pixel=新的Uint8Array([0,0,0,0]);
对于(常量版本的['webgl','webgl2']){
const canvas=document.createElement('canvas'),
gl=canvas.getContext(版本,{stencil:true}),
framebuffer=gl.createFramebuffer(),
stencilbuffer=gl.createRenderbuffer(),
纹理=gl.createTexture();
宽度=1;
高度=1;
gl.bindFramebuffer(gl.FRAMEBUFFER,FRAMEBUFFER);
gl.BinderBuffer(gl.RENDERBUFFER,模具缓冲区);
gl.renderbufferStorage(gl.RENDERBUFFER,gl.STENCIL_INDEX8,1,1);
gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.STENCIL_附件,gl.RENDERBUFFER,stencilbuffer);
gl.bindTexture(gl.TEXTURE_2D,纹理);
gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,1,1,0,gl.RGBA,gl.UNSIGNED_字节,像素);
gl.texParameteri(gl.TEXTURE\u 2D,gl.TEXTURE\u MAG\u过滤器,gl.NEAREST);
gl.texParameteri(gl.TEXTURE\u 2D,gl.TEXTURE\u MIN\u过滤器,gl.NEAREST);
gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,TEXTURE,0);
const status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);
如果(状态!==gl.FRAMEBUFFER\u完成){
控制台错误(状态、版本);
}
gl.删除纹理(纹理);
gl.deleteRenderbuffer(模具缓冲区);
gl.deleteFramebuffer(帧缓冲区);
}
这是个好问题。我想可能是WebGL规范中的错误
检查时,似乎没有提及STENCIL_索引
,STENCIL_索引
报纸上也没有提到这件事。直到它出现
也许谢谢您的快速反馈,我打开了