iPhone上“逐像素”更改颜色的最佳方法是什么?

时间:2009-06-16 04:53:38

标签: iphone opengl drawing quartz-graphics

我的游戏是this game的iPhone改编版。在这里,我的船只制造路径,然后如果封闭区域内没有敌人,则封闭的路径将被填满。

我把playField作为2D数组(int playField [300] [300])。

当需要更改封闭路径的颜色以显示它已填充时,船舶的路径标记为2并且封闭的区域标记为1.所以我填充了

区域
playFieldCountX=300, playFieldCountY=300;
for (int i=0; i<playFieldCountX; i++) {
    for (int j=0; j<playFieldCountY; j++) {
        if(playField[i][j]==0){
                        "What comes here??"    }

我目前正在通过CGContextMoveToPoint,AddLineToPoint和Quartz的StrokePath填充路径,这需要花费太多时间。

有什么更简单的吗?就像预定义1x1图像并在每个像素上渲染一样?或者只是获取并设置每个像素的颜色?

PS:我不懂OpenGL。如果您解释的内容与OpenGL有关,请详细说明。谢谢。

1 个答案:

答案 0 :(得分:3)

您应该创建一个CGBitmapContext,它使用数据缓冲区来存储图像数据。当您创建CGBitmapContext时,您将指定存储像素数据的格式。

然后要更改图片,您可以简单地修改缓冲区,然后从中重新创建UIImage以将其绘制到屏幕上。