У меня возникла проблема с получением текстуры рендеринга sfml для правильного возврата текстуры. Я считаю, что сузил ее до этого фрагмента кода. Я считаю, что это как-то связано с тем, как я пытаюсь скопировать текстуру в текстуре рендеринга в карту текстур.
renderedchunks будет частным, я просто сделал его общедоступным для быстрого тестирования функции.
Вот заголовочный файл
#ifndef TILE_MAP_H
#define TILE_MAP_H
#include "SFML/Graphics.hpp"
#include <map>
#include "Chunk.h"
//Class designed to manipulate chunks
//
class Tile_Map
{
public:
Tile_Map();
void RenderChunk(Texture_Manager&, int x, int y);
void CreateChunk(int x, int y); //Eventually will create based on biomes
std::map<int, std::map<int, sf::Texture> > renderedchunks;
protected:
private:
std::map<int, std::map<int, Chunk> > chunkmap; //Used to store all created chunks
};
Вот файл cpp
#include "Tile_Map.h"
Tile_Map::Tile_Map()
{
//ctor
}
void Tile_Map::CreateChunk(int x, int y)
{
chunkmap[x][y];
Chunk& chunk = chunkmap[x][y];
chunk.SetBiome("grass");
}
void Tile_Map::RenderChunk(Texture_Manager& tempmanager, int x, int y)
{
sf::RectangleShape drawable[8][8];
sf::RenderTexture drawingtexture;
Chunk& rchunk = chunkmap[x][y];
float renderx = 0;
float rendery = 0;
if(rchunk.GetBiome() == "grass")
{
for(int it = 0; it < 8; it++)
{
for(int it2 = 0; it2 < 8; it2++)
{
drawable[it][it2].setTexture(&tempmanager.GetTexture("grass"));
drawable[it][it2].setPosition(renderx, rendery);
drawingtexture.draw(drawable[it][it2]);
std::cout << "x = " << renderx << std::endl;
renderx += 32;
}
renderx = 0;
std::cout << "y = " << rendery << std::endl;
rendery += 32;
}
}
drawingtexture.display();
renderedchunks[x][y] = drawingtexture.getTexture();
}