You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
25 lines
829 B
25 lines
829 B
#pragma once |
|
|
|
#include "convert_func.hpp" |
|
|
|
namespace gli{ |
|
namespace detail |
|
{ |
|
template <typename textureType, typename T, precision P> |
|
struct clear |
|
{ |
|
static void call(textureType & Texture, typename convert<textureType, T, P>::writeFunc Write, tvec4<T, P> const & Color) |
|
{ |
|
GLI_ASSERT(Write); |
|
|
|
texture const ConvertTexel(Texture.target(), Texture.format(), texture::extent_type(1), 1, 1, 1); |
|
textureType Texel(ConvertTexel); |
|
Write(Texel, typename textureType::extent_type(0), 0, 0, 0, Color); |
|
|
|
size_t const BlockSize(block_size(Texture.format())); |
|
for(size_t BlockIndex = 0, BlockCount = Texture.size() / BlockSize; BlockIndex < BlockCount; ++BlockIndex) |
|
memcpy(static_cast<std::uint8_t*>(Texture.data()) + BlockSize * BlockIndex, Texel.data(), BlockSize); |
|
} |
|
}; |
|
}//namespace detail |
|
}//namespace gli
|
|
|