如果将(不同的纹理)绑定(bind)到这两个 GL_TEXTURE_2D
会发生什么?和 GL_TEXTURE_CUBE_MAP
在同一个纹理图像单元中?
例如,假设我将一个纹理绑定(bind)到 GL_TEXTURE0
的GL_TEXTURE_2D
目标和另一个纹理到同一纹理单元的GL_TEXTURE_CUBE_MAP
目标。然后我可以有两个统一变量,一个是 sampler2D
另一个是 samplerCube
并将两者都设置为 0(引用 GL_TEXTURE0
)?
我怀疑答案是“否”(或者结果未定义),但我没有在规范中找到任何明确禁止在同一纹理图像单元中使用多个纹理目标的内容。
最佳答案
对于 Chrome,我在尝试执行此类操作时遇到错误。
var gl = document.getElementById("canv00").getContext("webgl");
const texture = gl.createTexture()
gl.bindTexture(gl.TEXTURE_2D, texture)
gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture)
gl.getParameter(gl.TEXTURE_BINDING_2D) // texture
gl.getParameter(gl.TEXTURE_BINDING_CUBE_MAP) // null
gl.getError() // returns 1282 error
var gl = document.getElementById("canv00").getContext("webgl");
const texture = gl.createTexture()
gl.bindTexture(gl.TEXTURE_2D, texture)
// gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture)
gl.getParameter(gl.TEXTURE_BINDING_2D) // texture
gl.getParameter(gl.TEXTURE_BINDING_CUBE_MAP) // null
gl.getError() // no error
var gl = document.getElementById("canv00").getContext("webgl");
const texture = gl.createTexture()
// gl.bindTexture(gl.TEXTURE_2D, texture)
gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture)
gl.getParameter(gl.TEXTURE_BINDING_2D) // null
gl.getParameter(gl.TEXTURE_BINDING_CUBE_MAP) // texture
gl.getError() // no error
关于opengl-es - OpenGL ES 2.x : Bind both `GL_TEXTURE_2D` and `GL_TEXTURE_CUBE_MAP` in the same texture image unit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951792/