ユーザーが画面に描画できるアプリを開発しています。私はAppleが提供するGLPaintから始めました。
ユーザーが画面の特定の領域に色を付けているかどうかを検出したいのですが、1 / 15秒ごとに検出したいと思います(またはそのようなものなので、非常に高速です)。
ビットマップグラフィックスコンテキストを作成して渡しCGBitmapContextCreate
、ビューをそのコンテキストに描画して、すべてのピクセルをループすることを考えました。
もっと効率的なものを探しています...何か助けはありますか?
アップデート
glReadPixels()を使おうとしましたが、非常に遅いです...何かが足りないかもしれません... 100x100の領域を読み取ろうとしましたが、このメソッドが完了するまでに1秒ほどかかりました。これは私のコードです
- (void)isGameFinished
{
float x = 0;
float y = 0;
float w = 100;
float h = 100;
GLubyte* pixelColors = malloc(w * h * sizeof(GLubyte) * 3);
glReadPixels(x,y, w, h, GL_RGB, GL_UNSIGNED_BYTE, &pixelColors[0]);
for(int i=0;i<w*h;i+=3)
{
ccColor3B color=ccc3(pixelColors[i],pixelColors[i+1],pixelColors[i+2]);
NSLog(@"index: %d r:%c g:%c b:%c",i,color.r,color.g,color.b);
}
free(pixelColors);
}