绘制许多像素点安卓画布或opengl



我正在尝试实现自己的镜像协议。我正在使用 websocket 来检索压缩的像素缓冲区。解压缩这个缓冲区后,我得到了一大堆应该显示的颜色位置。

我在 onDraw 中一个巨大的数组列表(2 百万个元素(上使用带有 for 循环的画布,如下所示:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    for (int i = 0; i < this.pixelsList.size(); i++) { //SIZE = 2.073.600 pixels
        canvas.drawPoint(this.pixelsList.get(i).getPosition().x, this.pixelsList.get(i).getPosition().y, this.pixelsList.get(i).getPaint());
    }
}

我正在寻找一种有效的方式来显示这个巨大的数据包。我在OpenGL ES上,但我没有找到任何方法在一个位置显示一个像素。也许我应该看看OpenCV吗?

不要取消引用每个像素地址并在 OpenGL 中使用纹理。这可能是最快的方法。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture[texture_id].texture_width, texture[texture_id].texture_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixelsList);

或者如果它经常更新

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE,  **pixelsList**);

最新更新