SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Вертикальные белые полосы › Ответ в теме: Вертикальные белые полосы
Я попробовал данный способ, но ничего не сработало. Как я уже сказал: это дело в картинке! С ДРУГИМИ картинками всё нормально работает. Может нужно как-то обработать картинку… Перепробовал разные способы: сжимал в объёме, сохраняя в PhotoShop как для Web и т.д. Но мне нужны именно эти текстуры. Посоветуйте как обработать изображение, чтобы не было пролагиваний…
Вот реализованный код map.h
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
#pragma once #ifndef MAP_H #define MAP_H #include<SFML\Graphics.hpp> using namespace sf; #define HEIGHT_MAP 15 #define WIDTH_MAP 44 String TileMap[WIDTH_MAP] = { "00000000000000000000000000000000000000000000", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "0 0", "00000000000000000000000000000000000000000000" }; Sprite mapRender[HEIGHT_MAP][WIDTH_MAP]; Vector2i mapCoordinate[HEIGHT_MAP][WIDTH_MAP]; class Map { public: Texture texture; Sprite sprite; Map(Image &image) { image.createMaskFromColor(Color(255, 0, 255)); texture.loadFromImage(image); sprite.setTexture(texture); } void render() { for (int i = 0; i < HEIGHT_MAP; i++) for (int j = 0; j < WIDTH_MAP; j++) { Vector2i coordinate(j * 32, i * 32); mapCoordinate[i][j] = coordinate; if (TileMap[i][j] == ' ') { sprite.setTextureRect(IntRect(512, 192, 32, 32)); mapRender[i][j] = sprite; } if (TileMap[i][j] == '0') { sprite.setTextureRect(IntRect(384, 96, 32, 32)); mapRender[i][j] = sprite; } } } void draw(RenderWindow &window) { for (int i = 0; i < HEIGHT_MAP; i++) for (int j = 0; j < WIDTH_MAP; j++) { mapRender[i][j].setPosition(mapCoordinate[i][j].x, mapCoordinate[i][j].y); window.draw(mapRender[i][j]); } } }; #endif |