我正在尝试在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});
这样可以防止在将绘制缓冲区(颜色,深度,模板)绘制到屏幕后清除它们。请记住,设置可能会导致性能下降。

10-04 16:03