mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 19:59:28 +02:00
Load local texture files through the same code as network
This commit is contained in:
parent
75c99fe416
commit
c35d81260d
2 changed files with 60 additions and 61 deletions
|
@ -154,21 +154,63 @@ NetworkTexturePointer TextureCache::getTexture(const QUrl& url, TextureType type
|
||||||
return ResourceCache::getResource(url, QUrl(), content.isEmpty(), &extra).staticCast<NetworkTexture>();
|
return ResourceCache::getResource(url, QUrl(), content.isEmpty(), &extra).staticCast<NetworkTexture>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a texture version of an image file
|
|
||||||
gpu::TexturePointer TextureCache::getImageTexture(const QString& path) {
|
TextureCache::TextureLoaderFunc getTextureLoaderForType(TextureType type) {
|
||||||
QImage image = QImage(path).mirrored(false, true);
|
switch (type) {
|
||||||
gpu::Element formatGPU = gpu::Element(gpu::VEC3, gpu::NUINT8, gpu::RGB);
|
case ALBEDO_TEXTURE: {
|
||||||
gpu::Element formatMip = gpu::Element(gpu::VEC3, gpu::NUINT8, gpu::RGB);
|
return model::TextureUsage::createAlbedoTextureFromImage;
|
||||||
if (image.hasAlphaChannel()) {
|
break;
|
||||||
formatGPU = gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::RGBA);
|
}
|
||||||
formatMip = gpu::Element(gpu::VEC4, gpu::NUINT8, gpu::BGRA);
|
case EMISSIVE_TEXTURE: {
|
||||||
|
return model::TextureUsage::createEmissiveTextureFromImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LIGHTMAP_TEXTURE: {
|
||||||
|
return model::TextureUsage::createLightmapTextureFromImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CUBE_TEXTURE: {
|
||||||
|
return model::TextureUsage::createCubeTextureFromImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BUMP_TEXTURE: {
|
||||||
|
return model::TextureUsage::createNormalTextureFromBumpImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NORMAL_TEXTURE: {
|
||||||
|
return model::TextureUsage::createNormalTextureFromNormalImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ROUGHNESS_TEXTURE: {
|
||||||
|
return model::TextureUsage::createRoughnessTextureFromImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case GLOSS_TEXTURE: {
|
||||||
|
return model::TextureUsage::createRoughnessTextureFromGlossImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SPECULAR_TEXTURE: {
|
||||||
|
return model::TextureUsage::createMetallicTextureFromImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CUSTOM_TEXTURE: {
|
||||||
|
Q_ASSERT(false);
|
||||||
|
return TextureCache::TextureLoaderFunc();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DEFAULT_TEXTURE:
|
||||||
|
default: {
|
||||||
|
return model::TextureUsage::create2DTextureFromImage;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
gpu::TexturePointer texture = gpu::TexturePointer(
|
}
|
||||||
gpu::Texture::create2D(formatGPU, image.width(), image.height(),
|
|
||||||
gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_MIP_LINEAR)));
|
/// Returns a texture version of an image file
|
||||||
texture->assignStoredMip(0, formatMip, image.byteCount(), image.constBits());
|
gpu::TexturePointer TextureCache::getImageTexture(const QString& path, TextureType type) {
|
||||||
texture->autoGenerateMips(-1);
|
QImage image = QImage(path);
|
||||||
return texture;
|
auto loader = getTextureLoaderForType(type);
|
||||||
|
return gpu::TexturePointer(loader(image, QUrl::fromLocalFile(path).fileName().toStdString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
QSharedPointer<Resource> TextureCache::createResource(const QUrl& url,
|
QSharedPointer<Resource> TextureCache::createResource(const QUrl& url,
|
||||||
|
@ -203,53 +245,10 @@ NetworkTexture::NetworkTexture(const QUrl& url, const TextureLoaderFunc& texture
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkTexture::TextureLoaderFunc NetworkTexture::getTextureLoader() const {
|
NetworkTexture::TextureLoaderFunc NetworkTexture::getTextureLoader() const {
|
||||||
switch (_type) {
|
if (_type == CUSTOM_TEXTURE) {
|
||||||
case ALBEDO_TEXTURE: {
|
return _textureLoader;
|
||||||
return TextureLoaderFunc(model::TextureUsage::createAlbedoTextureFromImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EMISSIVE_TEXTURE: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::createEmissiveTextureFromImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LIGHTMAP_TEXTURE: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::createLightmapTextureFromImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CUBE_TEXTURE: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::createCubeTextureFromImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case BUMP_TEXTURE: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::createNormalTextureFromBumpImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case NORMAL_TEXTURE: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::createNormalTextureFromNormalImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ROUGHNESS_TEXTURE: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::createRoughnessTextureFromImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case GLOSS_TEXTURE: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::createRoughnessTextureFromGlossImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case SPECULAR_TEXTURE: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::createMetallicTextureFromImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CUSTOM_TEXTURE: {
|
|
||||||
return _textureLoader;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case DEFAULT_TEXTURE:
|
|
||||||
default: {
|
|
||||||
return TextureLoaderFunc(model::TextureUsage::create2DTextureFromImage);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return getTextureLoaderForType(_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ public:
|
||||||
const gpu::TexturePointer& getNormalFittingTexture();
|
const gpu::TexturePointer& getNormalFittingTexture();
|
||||||
|
|
||||||
/// Returns a texture version of an image file
|
/// Returns a texture version of an image file
|
||||||
static gpu::TexturePointer getImageTexture(const QString& path);
|
static gpu::TexturePointer getImageTexture(const QString& path, TextureType type = DEFAULT_TEXTURE);
|
||||||
|
|
||||||
/// Loads a texture from the specified URL.
|
/// Loads a texture from the specified URL.
|
||||||
NetworkTexturePointer getTexture(const QUrl& url, TextureType type = DEFAULT_TEXTURE,
|
NetworkTexturePointer getTexture(const QUrl& url, TextureType type = DEFAULT_TEXTURE,
|
||||||
|
|
Loading…
Reference in a new issue