在屏幕上正确渲染Tilemap

Rendering Tilemap on the screen correctly

本文关键字:Tilemap 屏幕      更新时间:2023-10-16

我有一个奇怪的问题,基于平铺图正确渲染我的关卡。在y轴上,所有的贴图都是正常对齐的,而在x轴上,它们似乎被一个空间分开了,我不知道为什么…

我创建了一个具有枚举值(从0到2)的矩阵,并在for中循环我的矩阵循环以渲染带有当前数字的贴图:例:GROUND = 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;
                }
            }

除了上面的评论,我们还必须小心避免任何沿着瓷砖边缘的模糊,因为它们的重复会使任何缺陷比单独观察更明显。

在将拼贴图的部分绘制到最终/中间目标的过程中可能会引入模糊,或者在这种情况下,源材料可能具有模糊的边缘。

特别是在处理如此"低"像素尺寸的图像时,必须保持警惕,并确保在图像编辑器中执行任何/所有调整大小的操作,而不会重新采样。

当将组装好的图像比特化到屏幕上时,可能需要双线性/三次重新采样,但绝不希望对源材料进行这种重新采样。