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 | const unsigned char OPAQUE_WHITE[] = { 0xFF, 0xFF, 0xFF, 0xFF }; | 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 | const unsigned char OPAQUE_BLUE[] = { 0x80, 0x80, 0xFF, 0xFF }; | 150 | const unsigned char OPAQUE_BLUE[] = { 0x80, 0x80, 0xFF, 0xFF }; |
| 149 | 151 | ||
| 150 | static void loadSingleColorTexture(const unsigned char* color) { | 152 | static void loadSingleColorTexture(const unsigned char* color) { |
| @@ -175,13 +177,13 @@ GLuint TextureCache::getBlueTextureID() { · 24 unmodified lines | |||
| 175 | /// Extra data for creating textures. | 177 | /// Extra data for creating textures. |
| 176 | class TextureExtra { | 178 | class TextureExtra { |
| 177 | public: | 179 | public: |
| 178 | bool normalMap; | 180 | TextureType type; |
| 179 | const QByteArray& content; | 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 | if (!dilatable) { | 185 | if (!dilatable) { |
| 184 | TextureExtra extra = { normalMap, content }; | 186 | TextureExtra extra = { type, content }; |
| 185 | return ResourceCache::getResource(url, QUrl(), false, &extra).staticCast<NetworkTexture>(); | 187 | return ResourceCache::getResource(url, QUrl(), false, &extra).staticCast<NetworkTexture>(); |
| 186 | } | 188 | } |
| 187 | NetworkTexturePointer texture = _dilatableNetworkTextures.value(url); | 189 | NetworkTexturePointer texture = _dilatableNetworkTextures.value(url); |
| @@ -292,7 +294,7 @@ bool TextureCache::eventFilter(QObject* watched, QEvent* event) { · 104 unmodified lines | |||
| 292 | QSharedPointer<Resource> TextureCache::createResource(const QUrl& url, | 294 | QSharedPointer<Resource> TextureCache::createResource(const QUrl& url, |
| 293 | const QSharedPointer<Resource>& fallback, bool delayLoad, const void* extra) { | 295 | const QSharedPointer<Resource>& fallback, bool delayLoad, const void* extra) { |
| 294 | const TextureExtra* textureExtra = static_cast<const TextureExtra*>(extra); | 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 | &Resource::allReferencesCleared); | 298 | &Resource::allReferencesCleared); |
| 297 | } | 299 | } |
| 298 | 300 | ||
| @@ -316,7 +318,7 @@ Texture::~Texture() { · 17 unmodified lines | |||
| 316 | glDeleteTextures(1, &_id); | 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 | Resource(url, !content.isEmpty()), | 322 | Resource(url, !content.isEmpty()), |
| 321 | _translucent(false) { | 323 | _translucent(false) { |
| 322 | 324 | ||
| @@ -324,9 +326,25 @@ NetworkTexture::NetworkTexture(const QUrl& url, bool normalMap, const QByteArray · 1 unmodified line | |||
| 324 | _loaded = true; | 326 | _loaded = true; |
| 325 | } | 327 | } |
| 326 | 328 | ||
| 327 | // default to white/blue | 329 | // default to white/blue/black |
| 328 | glBindTexture(GL_TEXTURE_2D, getID()); | 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 | glBindTexture(GL_TEXTURE_2D, 0); | 348 | glBindTexture(GL_TEXTURE_2D, 0); |
| 331 | 349 | ||
| 332 | // if we have content, load it after we have our self pointer | 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 | DilatableNetworkTexture::DilatableNetworkTexture(const QUrl& url, const QByteArray& content) : | 485 | DilatableNetworkTexture::DilatableNetworkTexture(const QUrl& url, const QByteArray& content) : |
| 468 | NetworkTexture(url, false, content), | 486 | NetworkTexture(url, DEFAULT_TEXTURE, content), |
| 469 | _innerRadius(0), | 487 | _innerRadius(0), |
| 470 | _outerRadius(0) | 488 | _outerRadius(0) |
| 471 | { | 489 | { |