将像素渲染到纹理
Render pixels to texture
我需要在 Android 上使用 OpenGL ES 2.0 将动态变化的像素渲染到屏幕上。
我有一个方法可以生成宽度*高度的颜色数组(RGBA、4*GLubyte)。还有 PutPixel(x, y, color) 方法可以替换具有 (x, y) 坐标的数组中的像素颜色。
我的解决方案是:每个 Draw() 方法调用我调用 BindTexture,glTexImage2D 使用数组作为纹理源,然后在全视口的平面上渲染此纹理。
这样做对吗?或者有其他更好的解决方案?
您的方法可能会产生足以满足您需求的性能,尤其是当您的宽度*高度小于全屏分辨率时。它还具有非常简单的优点。
但是,如果您可以在游戏过程中减少 CPU 和 GPU 之间的传输大小,通常您可以获得更好的性能。
假设您永远不需要读回 CPU 上的像素颜色,并且您通常每帧只渲染几个像素,那么最好的选择可能是使用渲染到纹理的方法。本质上,您创建了一个宽度*高度大小的可渲染纹理,并让您的 PutPixel 函数将彩色点渲染到纹理中(将它们分批处理以最小化绘制调用)。
我需要在 Android 上使用 OpenGL ES 2.0 将动态变化的像素渲染到屏幕上。
我有一个方法可以生成宽度*高度的颜色数组(RGBA、4*GLubyte)。还有 PutPixel(x, y, color) 方法可以替换具有 (x, y) 坐标的数组中的像素颜色。
我的解决方案是:每个 Draw() 方法调用我调用 BindTexture,glTexImage2D 使用数组作为纹理源,然后在全视口的平面上渲染此纹理。
这样做对吗?或者有其他更好的解决方案?
您的方法可能会产生足以满足您需求的性能,尤其是当您的宽度*高度小于全屏分辨率时。它还具有非常简单的优点。
但是,如果您可以在游戏过程中减少 CPU 和 GPU 之间的传输大小,通常您可以获得更好的性能。
假设您永远不需要读回 CPU 上的像素颜色,并且您通常每帧只渲染几个像素,那么最好的选择可能是使用渲染到纹理的方法。本质上,您创建了一个宽度*高度大小的可渲染纹理,并让您的 PutPixel 函数将彩色点渲染到纹理中(将它们分批处理以最小化绘制调用)。