WebGL 获取片元颜色

202 阅读1分钟

mxir1.csb.app/0%E8%83%8C%…

image.png

function check(gl, n, x, y, currentAngle, u_Clicked, viewProjMatrix, u_MvpMatrix) {
  var picked = false;
  gl.uniform1i(u_Clicked, 1);  // Pass true to u_Clicked(Draw cube with red)
  draw(gl, n, currentAngle, viewProjMatrix, u_MvpMatrix); //完全红色
  // Read pixel at the clicked position
  var pixels = new Uint8Array(4); // Array for storing the pixel value
  gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixels);

  if (pixels[0] == 255) // If red = 255, clicked on cube 直接判断是否为红色
    picked = true;

  gl.uniform1i(u_Clicked, 0);  // Pass false to u_Clicked(Draw cube with specified color)
  draw(gl, n, currentAngle, viewProjMatrix, u_MvpMatrix); //draw原来的颜色
  if (picked) alert('The cube was selected! ');
}