在屏幕上正确渲染 Tilemap

Rendering Tilemap on the screen correctly

我在正确渲染基于 tilemap 的关卡时遇到了一个奇怪的问题。 在 y 轴上,所有图块都是正常且对齐的,而在 x 轴上,它们似乎被 space 分开,我不明白为什么...

我创建了一个具有枚举值(从 0 到 2)的矩阵,并在 for 中循环我的矩阵 循环以使用当前编号渲染图块: 前任。接地 = 0;等...

这是它的外观照片 http://it.tinypic.com/r/ali261/8

这是方块的精灵图 http://it.tinypic.com/r/21kggw5/8

我将在此处添加代码。

for(int y = 0; y < 15; y++)
            {
                for(int x = 0; x < 20; x++)
                {
                    if(map[y][x] == GROUND)
                        render(tileTex,x*64 - camera.x,y*64 - camera.y,&gTileSprite[0],0,NULL,SDL_FLIP_NONE);
                    else if(map[y][x] == UGROUND)
                        render(tileTex,x*64 - camera.x,y*64 - camera.y,&gTileSprite[1],0,NULL,SDL_FLIP_NONE);
                    else if(map[y][x] == SKY)
                        render(tileTex,x*64 - camera.x,y*64 - camera.y,&gTileSprite[2],0,NULL,SDL_FLIP_NONE);

                    tBox[y][x].x = x*64;
                    tBox[y][x].y = y*64;
                    tBox[y][x].w = TILE_WIDTH;
                    tBox[y][x].h = TILE_HEIGHT;
                }
            }

除了上面的评论之外,必须小心避免瓷砖边缘出现任何模糊,因为与单独查看相比,它们的重复会使任何缺陷更加明显。

在将部分图块地图绘制到 final/intermediate 目标的过程中可能会引入模糊,或者在这种情况下(并且已经确认),源 material 可能已经模糊边缘。

尤其是在处理像素尺寸如此“低”的图像时,必须保持警惕并确保 any/all 调整大小操作是在图像编辑器中执行的,无需重新采样。

虽然 bilinear/cubic 将组合图像 blit 到屏幕时可能需要重新采样,但从不 不希望对源进行这种重新采样material.