首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebGL2 FBO深度附着值

WebGL2 FBO深度附着值
EN

Stack Overflow用户
提问于 2017-12-05 18:31:15
回答 0查看 963关注 0票数 1

我只是尝试使用WebGL2渲染场景的深度值,如下所示:

代码语言:javascript
复制
//Texture
depthTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, depthTexture);
 
gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT24,
                width, height, 0,
                gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null);
 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);

//FBO
fb = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture, 0);
gl.bindFramebuffer(gl.FRAMEBUFFER, null);

然后我像这样呈现它:

代码语言:javascript
复制
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);

gl.useProgram(shaderProgram);

//Just a torus...
gl.bindVertexArray(vao);
 
gl.colorMask(false, false, false, false);
gl.enable(gl.DEPTH_TEST);
gl.clear(gl.DEPTH_BUFFER_BIT);
...
gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT,0);

//Then I draw a full screen quad that simply samples the depth texture
gl.bindFramebuffer(gl.FRAMEBUFFER, null)
....

它似乎工作得很好,但是当采样附加的深度纹理时,我得到了看起来像线性深度的东西…

我用来渲染到FBO中的程序非常基础

垂直:

代码语言:javascript
复制
#version 300 es
 
layout(location = 0) in vec3 position;

uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;

void main() {
 
  gl_Position = projection * view * model * vec4(position, 1.);
}

Frag:

代码语言:javascript
复制
#version 300 es
precision highp float;


layout(location = 0) out vec4 outColor;

void main() {
  outColor = vec4(1,0,0,1)
}

我期望深度缓冲区是对数的,即使我不能确定我当前得到的是不是真正的线性,它看起来也不是对数的……如果它真的是线性的,不知何故,这就是你应该从深度连接中得到的,我完全可以接受,因为我可能需要线性而不是对数深度,但目前我不确定这是预期行为,还是我做错了什么(可能是后者)。

干杯

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47651396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档