Исключение поверхности в моем коде webgl неверно - PullRequest
0 голосов
/ 12 сентября 2018

Три треугольника вращаются по часовой стрелке вокруг оси Y. Тем не менее, существуют некоторые проблемы «удаления поверхности», когда треугольники перекрываются. Все время только один треугольник остается впереди. У меня OR ED, DEPTH_BUFFER_BIT и depthMask тоже включены, поэтому буфер глубины доступен для записи. Но это не решает мою проблему.

Я не могу вставить здесь полный код проекта, но могу предоставить функцию рисования ниже.

function draw() {

  if (objects.length != 0) {
    gl.clearColor(0, 0, 0, 1)
    gl.depthMask(true)
    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)

    for (var index = 0; index < objects.length; index++) {
      gl.uniformMatrix4fv(program.perspectivePointer, false, program.perspectiveMatrix)
      gl.uniformMatrix4fv(program.worldTransformPointer, false, program.worldTransformMatrix)
      gl.bindBuffer(gl.ARRAY_BUFFER, masterVertexBuffer)
      gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(objects[index].getVertexList()), gl.STATIC_DRAW)
      gl.bindBuffer(gl.ARRAY_BUFFER, colorBuffer)
      gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(objects[index].getColorList()), gl.STATIC_DRAW)
      gl.drawArrays(gl.TRIANGLE_STRIP, 0, 3)
    }
  }
  requestAnimationFrame(draw, program)
}

Пожалуйста, попросите другие вещи, если это необходимо. Я также пробовал сортировку по глубине, но не повезло.

...