我是使用SDL 2,并且我有一个8x8像素块的2D数组:
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 0xdf, 0xef, 0xff, 0xff);
for (s32 y = 0, Y = 0; y < worldSize.y; y++, Y += blockSize)
for (s32 x = 0, X = 0; x < worldSize.x; x++, X += blockSize)
if (block[x][y].GetMaterial())
{
if (block[x][y].IsSolid())
{
SDL_Rect src =
{
block[x][y].GetTileVariant() * blockSize,
block[x][y].GetTile() * blockSize,
blockSize,
blockSize
};
SDL_Rect dst =
{
X + (s32)posX,
Y + (s32)posY,
blockSize,
blockSize
};
SDL_RenderCopy(renderer, materials[block[x][y].GetMaterial()]->texture, &src, &dst);
}
}
SDL_RenderPresent(renderer);
所以我在随机顺序中使用了几个纹理,例如:1、2、5、2、2、3、1等等。如果它填满整个屏幕(1920x1080),它就开始变得卡顿。虽然不是很明显,但还是有点影响。因此,我的问题是:如何进行优化?我应该使用什么?我需要一些代码示例。最后,我是否需要自己编写一些OpenGL的内容或者应该做些什么呢?