1#include "TexturesCommon.h"
3Cogs::TextureHandle Cogs::TexturesCommon::loadTexture(
const uint8_t * bytes, uint32_t width, uint32_t height, TextureFormat format, uint32_t flags)
5 return load(Cogs::ResourceDimensions::Texture2D, bytes ? &bytes :
nullptr, 1, 1, &width, &height, format, 1, flags);
8Cogs::TextureHandle Cogs::TexturesCommon::loadTexture(
const uint8_t * bytes, uint32_t width, uint32_t height, TextureFormat format, uint32_t numSamples, uint32_t flags)
10 return load(numSamples == 1 ? Cogs::ResourceDimensions::Texture2D : Cogs::ResourceDimensions::Texture2DMS, bytes ? &bytes :
nullptr, 1, 1, &width, &height, format, numSamples, flags);
13Cogs::TextureHandle Cogs::TexturesCommon::loadTextureMipMaps(
const uint8_t ** bytes,
size_t numLevels,
const uint32_t * widths,
const uint32_t * heights, TextureFormat format, uint32_t flags)
15 return load(Cogs::ResourceDimensions::Texture2D, bytes, 1, numLevels, widths, heights, format, 1, flags);
18Cogs::TextureHandle Cogs::TexturesCommon::loadTextureArray(
const uint8_t ** bytes,
const size_t arraySize,
const size_t numLevels,
const uint32_t * widths,
const uint32_t * heights, TextureFormat format, uint32_t flags )
20 return load(Cogs::ResourceDimensions::Texture2DArray, bytes, arraySize, numLevels, widths, heights, format, 1, flags);
23Cogs::TextureHandle Cogs::TexturesCommon::loadCubeMap(
const uint8_t ** bytes,
const size_t arraySize,
const size_t numLevels,
const uint32_t * widths,
const uint32_t * heights, TextureFormat format, uint32_t flags )
25 return load(Cogs::ResourceDimensions::TextureCube, bytes, arraySize, numLevels, widths, heights, format, 1, flags |
TextureFlags::CubeMap);
28Cogs::TextureHandle Cogs::TexturesCommon::load(Cogs::ResourceDimensions target,
const uint8_t ** bytes,
const size_t arraySize,
const size_t numLevels,
const uint32_t * widths,
const uint32_t * heights, TextureFormat format, uint32_t numSamples, uint32_t flags)
30 TextureDescription desc = {};
32 desc.width = widths[0];
33 desc.height = heights[0];
35 desc.layers =
static_cast<uint32_t
>(arraySize);
37 desc.levels =
static_cast<uint32_t
>(numLevels);
38 desc.samples = numSamples;
43 auto data = TextureData(TextureExtent{ desc.width, desc.height, 1 }, desc.layers, desc.faces, desc.levels, desc.format);
46 data.initExternal((intptr_t)bytes[0]);
48 data.initExternal((
const void **)bytes, desc.layers, desc.faces, desc.levels);
51 return loadTexture(desc, &data);
53 return loadTexture(desc,
nullptr);
ETextureFlags
Texture flags enumeration.
@ Texture
Texture usage, see Default.
@ CubeMap
The texture can be used as a cube map.
@ Default
Default usage, the texture can be loaded once and bound and sampled in shaders.