Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebGL中使用的模具索引常量在哪里?_Javascript_Opengl Es_Webgl - Fatal编程技术网

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_索引

报纸上也没有提到这件事。直到它出现


也许

谢谢您的快速反馈,我打开了