Conway の Game of Life の SDL バージョンを作成し始めています。以前に SDL を使用したことがありますが、ピクセルに直接アクセスしたことはありません。次のコードを書きましたが、かなり遅いです。Flip の代わりに UpdateRect を使用してみましたが、両者に違いはありませんでした。SWSURFACEでSDLを初期化しました。それを改善するために私にできることはありますか?回避策を念頭に置いています(大きなピクセルにはbmpを使用するなど)。プロット配列は 640x480 の Cell オブジェクトであり、getter/setter を介してアクセスできる「生きている」メンバーを単に含んでいます。私がやりたいのは、マウスが効率的にピクセルを描画できるようにすることだけです。これを行うには OpenGL を使用する必要がありますか? 最新のハードウェアはピクセルごとのアクセスを意図していないことを認識していることを明確にしたいと思います。しかし、それが私が必要としているものなので、解決策を探しています。
while (quit == false)
{
int pX = 0;
int pY = 0;
bool did_set = false;
if (SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_MOUSEBUTTONDOWN:
plot[event.button.y][event.button.x].setAlive(true);
pX = event.button.x;
pY = event.button.y;
did_set = true;
break;
case SDL_QUIT:
quit = true;
break;
}
}
if (did_set)
{
SDL_LockSurface(screen);
Uint32 p = SDL_MapRGB(screen->format, 255,255,255);
putpixel(screen, pX, pY, p);
SDL_UnlockSurface(screen);
}
SDL_Flip(screen);
}