Showing the changes to interface/src/renderer/TextureCache.cpp (1 of 4 files). Show all
Unified · Split
| @@ -145,6 +145,8 @@ GLuint TextureCache::getPermutationNormalTextureID() { · 144 unmodified lines | ||
| 145 | 145 | } |
| 146 | 146 | |
| 147 | 147 | const unsigned char OPAQUE_WHITE[] = { 0xFF, 0xFF, 0xFF, 0xFF }; |
| 148 | +const unsigned char TRANSPARENT_WHITE[] = { 0xFF, 0xFF, 0xFF, 0x0 }; | |
| 149 | +const unsigned char OPAQUE_BLACK[] = { 0x0, 0x0, 0x0, 0xFF }; | |
| 148 | 150 | const unsigned char OPAQUE_BLUE[] = { 0x80, 0x80, 0xFF, 0xFF }; |
| 149 | 151 | |
| 150 | 152 | static void loadSingleColorTexture(const unsigned char* color) { |
| @@ -175,13 +177,13 @@ GLuint TextureCache::getBlueTextureID() { · 24 unmodified lines | ||
| 175 | 177 | /// Extra data for creating textures. |
| 176 | 178 | class TextureExtra { |
| 177 | 179 | public: |
| 178 | − bool normalMap; | |
| 180 | + TextureType type; | |
| 179 | 181 | const QByteArray& content; |
| 180 | 182 | }; |
| 181 | 183 | |
| 182 | −NetworkTexturePointer TextureCache::getTexture(const QUrl& url, bool normalMap, bool dilatable, const QByteArray& content) { | |
| 184 | +NetworkTexturePointer TextureCache::getTexture(const QUrl& url, TextureType type, bool dilatable, const QByteArray& content) { | |
| 183 | 185 | if (!dilatable) { |
| 184 | − TextureExtra extra = { normalMap, content }; | |
| 186 | + TextureExtra extra = { type, content }; | |
| 185 | 187 | return ResourceCache::getResource(url, QUrl(), false, &extra).staticCast<NetworkTexture>(); |
| 186 | 188 | } |
| 187 | 189 | NetworkTexturePointer texture = _dilatableNetworkTextures.value(url); |
| @@ -292,7 +294,7 @@ bool TextureCache::eventFilter(QObject* watched, QEvent* event) { · 104 unmodified lines | ||
| 292 | 294 | QSharedPointer<Resource> TextureCache::createResource(const QUrl& url, |
| 293 | 295 | const QSharedPointer<Resource>& fallback, bool delayLoad, const void* extra) { |
| 294 | 296 | const TextureExtra* textureExtra = static_cast<const TextureExtra*>(extra); |
| 295 | − return QSharedPointer<Resource>(new NetworkTexture(url, textureExtra->normalMap, textureExtra->content), | |
| 297 | + return QSharedPointer<Resource>(new NetworkTexture(url, textureExtra->type, textureExtra->content), | |
| 296 | 298 | &Resource::allReferencesCleared); |
| 297 | 299 | } |
| 298 | 300 | |
| @@ -316,7 +318,7 @@ Texture::~Texture() { · 17 unmodified lines | ||
| 316 | 318 | glDeleteTextures(1, &_id); |
| 317 | 319 | } |
| 318 | 320 | |
| 319 | −NetworkTexture::NetworkTexture(const QUrl& url, bool normalMap, const QByteArray& content) : | |
| 321 | +NetworkTexture::NetworkTexture(const QUrl& url, TextureType type, const QByteArray& content) : | |
| 320 | 322 | Resource(url, !content.isEmpty()), |
| 321 | 323 | _translucent(false) { |
| 322 | 324 | |
| @@ -324,9 +326,25 @@ NetworkTexture::NetworkTexture(const QUrl& url, bool normalMap, const QByteArray · 1 unmodified line | ||
| 324 | 326 | _loaded = true; |
| 325 | 327 | } |
| 326 | 328 | |
| 327 | − // default to white/blue | |
| 329 | + // default to white/blue/black | |
| 328 | 330 | glBindTexture(GL_TEXTURE_2D, getID()); |
| 329 | − loadSingleColorTexture(normalMap ? OPAQUE_BLUE : OPAQUE_WHITE); | |
| 331 | + switch (type) { | |
| 332 | + case NORMAL_TEXTURE: | |
| 333 | + loadSingleColorTexture(OPAQUE_BLUE); | |
| 334 | + break; | |
| 335 | + | |
| 336 | + case SPECULAR_TEXTURE: | |
| 337 | + loadSingleColorTexture(OPAQUE_BLACK); | |
| 338 | + break; | |
| 339 | + | |
| 340 | + case SPLAT_TEXTURE: | |
| 341 | + loadSingleColorTexture(TRANSPARENT_WHITE); | |
| 342 | + break; | |
| 343 | + | |
| 344 | + default: | |
| 345 | + loadSingleColorTexture(OPAQUE_WHITE); | |
| 346 | + break; | |
| 347 | + } | |
| 330 | 348 | glBindTexture(GL_TEXTURE_2D, 0); |
| 331 | 349 | |
| 332 | 350 | // if we have content, load it after we have our self pointer |
| @@ -465,7 +483,7 @@ void NetworkTexture::imageLoaded(const QImage& image) { · 132 unmodified lines | ||
| 465 | 483 | } |
| 466 | 484 | |
| 467 | 485 | DilatableNetworkTexture::DilatableNetworkTexture(const QUrl& url, const QByteArray& content) : |
| 468 | − NetworkTexture(url, false, content), | |
| 486 | + NetworkTexture(url, DEFAULT_TEXTURE, content), | |
| 469 | 487 | _innerRadius(0), |
| 470 | 488 | _outerRadius(0) |
| 471 | 489 | { |