gpt4 book ai didi

javascript - WebGL 的 zBuffer 不起作用

转载 作者:行者123 更新时间:2023-12-02 17:22:32 26 4
gpt4 key购买 nike

WebGL 有 zBuffer 或深度吗?

这就是我的问题:

problem

立方体正在被裁剪或未正确渲染。设置 0 和 1 旁边的“z”坐标会导致对象/几何体被裁剪/剪切。另外,我已经在 C++ 上实现了这个,并且只需将其移植到 webGL 和 OpenGL ES 即可正常工作。这是我的透视 View 配置:

mat4.perspective(45.0, gl.viewportWidth / gl.viewportHeight, 0.1, 1000.0, pMatrix);

还尝试将 zFar 设置为更大的值,但结果是相同的。

这是我用于矢量翻译的代码:

mat4.translate(mvMatrix, mvMatrix, [0.0, 0.0, 2.0]);

还尝试检查 mat4.translate 函数是否存在问题:

var x = 0.0, y = 0.0, z = 2.0;
var position = [
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
x, y, z, 1,
];

mat4.multiply(mvMatrix, mvMatrix, position);

还检查并尝试直接在顶点着色器中设置值:

gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition.x, aVertexPosition.y, 2.0, 1.0);

更新:还设置为启用 DEPTH_TEST。

gl.enable(gl.DEPTH_TEST);
gl.depthFunc(gl.LEQUAL);

最佳答案

最后,我解决了这个问题,问题的原因是由于无效的参数参数和互联网上有关 gl-matrix.js 库的使用的过时的教程。

mat4.perspective(45.0, gl.viewportWidth / gl.viewportHeight, 0.1, 1000.0, pMatrix);

而新的 gl-matrix 参数应该是这样的:

mat4.perspective(pMatrix, 45.0, gl.viewportWidth / gl.viewportHeight, 0.1, 1000.0);

检查 JS 库的正确文档后。

关于javascript - WebGL 的 zBuffer 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23797542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com