在屏幕上正确渲染Tilemap
Rendering Tilemap on the screen correctly
我有一个奇怪的问题,基于平铺图正确渲染我的关卡。在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;
}
}
除了上面的评论,我们还必须小心避免任何沿着瓷砖边缘的模糊,因为它们的重复会使任何缺陷比单独观察更明显。
在将拼贴图的部分绘制到最终/中间目标的过程中可能会引入模糊,或者在这种情况下,源材料可能具有模糊的边缘。
特别是在处理如此"低"像素尺寸的图像时,必须保持警惕,并确保在图像编辑器中执行任何/所有调整大小的操作,而不会重新采样。
当将组装好的图像比特化到屏幕上时,可能需要双线性/三次重新采样,但绝不希望对源材料进行这种重新采样。
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- Winapi:屏幕截图未显示在窗口中
- 如何在快板的屏幕中显示子位图的绘制?
- 按回车键后输出屏幕关闭
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?
- SFML 向下移动时如何围绕屏幕中心旋转?
- 截取屏幕截图后程序卡住
- C++鼠标单击时的屏幕截图不起作用
- 屏幕插入运算符<<的运算符过载问题
- 获取网格中心的屏幕位置
- SFML 中的字体.信息不显示在屏幕上.显示的不是信息,而是点
- 如何在屏幕上环绕x和y?
- GetDIBits 在屏幕捕获函数中多次迭代后返回零
- OpenGL ES 2.0将纹理绘制到屏幕上是行不通的
- GTKMM:拍摄绘图区域的屏幕截图?
- OpenGL - 添加第二个着色器属性会导致空白屏幕
- 在屏幕上正确渲染Tilemap