Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Opengl 尝试进行深度连接时帧缓冲区状态错误(返回36054)_Opengl_Jogl - Fatal编程技术网

Opengl 尝试进行深度连接时帧缓冲区状态错误(返回36054)

Opengl 尝试进行深度连接时帧缓冲区状态错误(返回36054),opengl,jogl,Opengl,Jogl,下面是为阴影映射设置帧缓冲区的代码,但在检查帧缓冲区状态时返回36054。有什么想法吗 //bind framebuffer for shadow mapping gl.glGenFramebuffers(1, framebuff); gl.glBindFramebuffer(GL4.GL_FRAMEBUFFER, framebuff.get(0)); gl.glGenTextures(1, textureBuff); gl.glBindTexture(GL4.GL_TEXTURE_2D,

下面是为阴影映射设置帧缓冲区的代码,但在检查帧缓冲区状态时返回36054。有什么想法吗

//bind framebuffer for shadow mapping
gl.glGenFramebuffers(1, framebuff);
gl.glBindFramebuffer(GL4.GL_FRAMEBUFFER, framebuff.get(0));

gl.glGenTextures(1, textureBuff);

gl.glBindTexture(GL4.GL_TEXTURE_2D, textureBuff.get(0));
gl.glTexStorage2D(GL4.GL_TEXTURE_2D, 1, GL4.GL_DEPTH_COMPONENT32F, displayWidth, displayHeight);
gl.glTexParameteri(GL4.GL_TEXTURE_2D, GL4.GL_TEXTURE_MAG_FILTER, GL4.GL_LINEAR);
gl.glTexParameteri(GL4.GL_TEXTURE_2D, GL4.GL_TEXTURE_MIN_FILTER, GL4.GL_LINEAR);//GL_LINEAR_MIPMAP_LINEAR
gl.glTexParameteri(GL4.GL_TEXTURE_2D, GL4.GL_TEXTURE_WRAP_S, GL4.GL_CLAMP_TO_EDGE);
gl.glTexParameteri(GL4.GL_TEXTURE_2D, GL4.GL_TEXTURE_WRAP_T, GL4.GL_CLAMP_TO_EDGE);

gl.glTexParameteri(GL4.GL_TEXTURE_2D, GL4.GL_TEXTURE_COMPARE_MODE, GL4.GL_COMPARE_REF_TO_TEXTURE);
gl.glTexParameteri(GL4.GL_TEXTURE_2D, GL4.GL_TEXTURE_COMPARE_FUNC, GL4.GL_LEQUAL);
gl.glFramebufferTexture(GL4.GL_FRAMEBUFFER, GL4.GL_DEPTH_ATTACHMENT, textureBuff.get(0), 0);
gl.glDrawBuffer(GL4.GL_NONE);

if(gl.glCheckFramebufferStatus(GL4.GL_FRAMEBUFFER) != GL4.GL_FRAMEBUFFER_COMPLETE)
    return gl.glCheckFramebufferStatus(GL4.GL_FRAMEBUFFER);

固定的。displayWidth和displayHeight是在整形功能中设置的,在整形功能中分配之前默认为0,因此在设置缓冲区时为0,这违反了规则。

是否
displayWidth
displayHeight
非零?这意味着附件不完整,可能是硬件相关的。如果您的硬件功能不足,可能会发生这种情况。请给我们更多的信息。