Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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 多个gl.DrainElements调用无法正常工作_Javascript_Webgl - Fatal编程技术网

Javascript 多个gl.DrainElements调用无法正常工作

Javascript 多个gl.DrainElements调用无法正常工作,javascript,webgl,Javascript,Webgl,我有以下功能,可以使用Mini Cooper绘制场景,它使用for循环分别渲染汽车的每个部分 function drawScene() { var colormap = new Object(); colormap["Body"] = [0.05, 0.05, 0.54]; colormap["Body Chrome"] = [0.95, 0.96, 0.93]; colormap["Roof"]=[0.85, 0.85, 0.85]; colormap[

我有以下功能,可以使用Mini Cooper绘制场景,它使用for循环分别渲染汽车的每个部分

function drawScene() {
    var colormap = new Object();
    colormap["Body"] = [0.05, 0.05, 0.54];
    colormap["Body Chrome"] = [0.95, 0.96, 0.93];
    colormap["Roof"]=[0.85, 0.85, 0.85];
    colormap["Headlights"]=[0.95, 0.96, 0.93];
    colormap["Mirrors"]=[0.85, 0.85, 0.85];
    colormap["Brakelights"]=[0.54, 0.22, 0.22];
    colormap["Undercarriage"]=[0.2, 0.2, 0.2];
    colormap["Antenna"]=[0.2, 0.2, 0.2];
    colormap["Driver Blinker"]=[0.9, 0.5, 0.1];
    colormap["Passenger Blinker"]=[0.9, 0.5, 0.1];
    colormap["Exhaust"]=[0.95, 0.96, 0.93];
    colormap["Upper Driver Wiper"]=[0.2, 0.2, 0.2];
    colormap["Upper Passenger Wiper"]=[0.2, 0.2, 0.2];
    colormap["Lower Driver Wiper"]=[0.2, 0.2, 0.2];
    colormap["Lower Passenger Wiper"]=[0.2, 0.2, 0.2]
    colormap["Rear Wiper"]=[0.2, 0.2, 0.2];
    colormap["Vents"]=[0.1, 0.1, 0.1];
    colormap["License"]=[0.94, 0.64, 0.19];
    colormap["Front Driver Rim"]=[0.75, 0.75, 0.75];
    colormap["Front Passenger Rim"]=[0.75, 0.75, 0.75];
    colormap["Rear Driver Rim"]=[0.75, 0.75, 0.75];
    colormap["Rear Passenger Rim"]=[0.75, 0.75, 0.75];
    colormap["Front Driver Tire"]=[0.1, 0.1, 0.1];
    colormap["Front Passenger Tire"]=[0.1, 0.1, 0.1];
    colormap["Rear Driver Tire"]=[0.1, 0.1, 0.1];
    colormap["Rear Passenger Tire"]=[0.1, 0.1, 0.1];
    colormap["Brakes"]=[0.75, 0.75, 0.75];
    colormap["Rear View Mirror"]=[0.8, 0.8, 0.8];
    colormap["Interior"]=[0.4, 0.4, 0.0];
    colormap["Driver"]=[0.9, 0.9, 0.9];
    colormap["Chair"]=[0.55, 0.27, 0.075];
    colormap["Windows"]=[0.5, 0.5, 0.5];
    gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);



    gl.bindBuffer(gl.ARRAY_BUFFER, miniVertexBuffer);
    gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, 3, gl.FLOAT, false, 4*8, 0);
    setMatrixUniforms();

    gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, miniIndexBuffer);
    console.log(miniCoop);
    for(part in miniCoop.parts){
        var start = miniCoop.group[miniCoop.parts[part]][0];
        var end = miniCoop.group[miniCoop.parts[part]][1];
        gl.uniform3f(shaderProgram.colour, colormap[miniCoop.parts[part]][0], colormap[miniCoop.parts[part]][1], colormap[miniCoop.parts[part]][2]);
        var offset = 2*3 * start;
        var count = 3 *(end - start);
        gl.drawElements(gl.TRIANGLES, count, gl.UNSIGNED_SHORT, offset);
    }
}
但是,当调用抽屉元素时,场景不会在背景中绘制对象,导致绘制的第一个对象身体始终位于前景,而不管它在场景中的位置如何,并且场景的其余部分按照颜色贴图中显示的顺序显示。我不知道问题出在哪里,非常感谢您的帮助

输出图像示例: 在Dropbox上:

是否打开深度测试

gl.enable(gl.DEPTH_TEST);

如果您查看dropbox上的完整内容,我在webGLStart函数中启用了它,这就是为什么它如此令人困惑的原因。