javascript - 如何使用 gl.readPixels 读取点大小 > 1 的绘制 gl.POINTS?
问题描述
我的目标是在画布上读取一个大点的像素。目前我什至无法在 pointSize = 1 处绘制像素。这是一个链接:https ://codepen.io/issabln/pen/LYEGWyO
代码片段:
function drawOneBlackPixel( gl, x, y ) {
// Fills the buffer with a single point?
gl.bufferData( gl.ARRAY_BUFFER, new Float32Array([
x, y]), gl.STATIC_DRAW );
// Draw one point.
gl.drawArrays( gl.POINTS, 0, 1 );
}
gl.clearColor(1.0, 1.0, 1.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
// These tests are supposed to be x,y coordinates from top left.
drawOneBlackPixel( gl, 1, 0 );
const pix = new Uint8Array(4);
gl.readPixels(1, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pix);
console.log(pix)
任何想法?
解决方案
翻转 Y 坐标就可以了(请注意,-1
否则您会在视口之外阅读)
gl.readPixels(1, gl.drawingBufferHeight-1, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pix);
推荐阅读
- javascript - Webpack 4 动态导入导致 TypeError: [object Module] is not a constructor
- c++ - 是否有任何理由不会将堆指针分配给数组?
- angular - 如何为 Tomcat 配置 Nginx proxy_pass in
- reactjs - Uncaught (in promise) TypeError: loginMutation is not a function
- java - 无限物品recyclerview练习
- android - 如何将数组中的所有值添加到 ArrayList?
- c++ - 我们可以声明一个抽象方法来返回抽象超类中的子类对象而不需要新的实例化吗?
- c++ - 在这种情况下,数组 a 会被取消分配吗?
- python - 如何解决使用 fmin_l_bfgs_b 后出现的“未能初始化意图(inout|inplace|cache)数组,输入不是数组”?
- flutter - 如何分享一个用 Dart 编写的闭源 Flutter 库?