我正在尝试在WebGl中进行挑选。我渲染了两个形状,每个形状上都映射了不同的纹理。我正在尝试在某些坐标上获取像素。这是例子。
var pixelValues = new Uint8Array(4);
gl.readPixels(10, 35, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixelValues);
console.log(pixelValues);
但是pixelValues始终包含[0,0,0,0]。我究竟做错了什么?我需要做一些与帧缓冲有关的事情吗?
最佳答案
根据WebGL latest specs,您现在需要调用getContext
来设置preserveDrawingBuffer
标志,例如:
var ctx = canvas.getContext("webgl", {preserveDrawingBuffer: true});
这样可以防止在将绘制缓冲区(颜色,深度,模板)绘制到屏幕后清除它们。请记住,设置可能会导致性能下降。