summaryrefslogtreecommitdiffhomepage
path: root/chunk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chunk.cpp')
-rw-r--r--chunk.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/chunk.cpp b/chunk.cpp
index 87cbe0cf..08009d0e 100644
--- a/chunk.cpp
+++ b/chunk.cpp
@@ -5,10 +5,12 @@ namespace Magnum::Examples {
chunk_sampler_array::chunk_sampler_array()
{
samplers.reserve(MAX_SAMPLERS);
+ samplers.push_back(nullptr);
}
void chunk_sampler_array::ensure_sampler(std::size_t tile_id, const shared_sampler& x)
{
+ CORRADE_INTERNAL_ASSERT(x != nullptr);
CORRADE_INTERNAL_ASSERT(tile_id < TILE_COUNT);
if (std::size_t id = sampler_map[tile_id]; id != 0)
{
@@ -26,20 +28,22 @@ void chunk_sampler_array::clear()
{
Magnum::GL::AbstractTexture::unbindImages(0, samplers.size());
samplers.clear();
+ samplers.push_back(nullptr);
sampler_map = {};
}
void chunk_sampler_array::bind()
{
Magnum::GL::AbstractTexture::unbindImages(0, MAX_SAMPLERS);
- for (std::size_t i = 0; i < samplers.size(); i++)
- samplers[i]->texture().bind((int)i + 1);
+ for (std::size_t i = 1; i < samplers.size(); i++)
+ samplers[i]->texture().bind((int)i);
}
std::shared_ptr<tile_atlas> chunk_sampler_array::operator[](std::size_t tile_id) const
{
CORRADE_INTERNAL_ASSERT(tile_id < TILE_COUNT);
- std::size_t sampler_id = sampler_map[tile_id] - 1;
+ std::size_t sampler_id = sampler_map[tile_id];
+ CORRADE_INTERNAL_ASSERT(sampler_id != 0);
CORRADE_INTERNAL_ASSERT(sampler_id < samplers.size());
const auto& sampler = samplers[sampler_id];
CORRADE_INTERNAL_ASSERT(sampler != nullptr);