History

For splat textures, use transparent white as a default.

Andrzej Kapolka committed 12 years ago

Commit 6e06b631 parent 530f5b04 files · +37 −14Browse files

Showing the changes to interface/src/renderer/TextureCache.cpp (1 of 4 files). Show all

Unified · Split

interface/src/renderer/TextureCache.cpp+26−8
@@ -145,6 +145,8 @@ GLuint TextureCache::getPermutationNormalTextureID() { · 144 unmodified lines
145}145}
146 146
147const unsigned char OPAQUE_WHITE[] = { 0xFF, 0xFF, 0xFF, 0xFF };147const unsigned char OPAQUE_WHITE[] = { 0xFF, 0xFF, 0xFF, 0xFF };
148const unsigned char TRANSPARENT_WHITE[] = { 0xFF, 0xFF, 0xFF, 0x0 };
149const unsigned char OPAQUE_BLACK[] = { 0x0, 0x0, 0x0, 0xFF };
148const unsigned char OPAQUE_BLUE[] = { 0x80, 0x80, 0xFF, 0xFF };150const unsigned char OPAQUE_BLUE[] = { 0x80, 0x80, 0xFF, 0xFF };
149 151
150static void loadSingleColorTexture(const unsigned char* color) {152static 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.
176class TextureExtra {178class TextureExtra {
177public:179public:
178 bool normalMap;180 TextureType type;
179 const QByteArray& content;181 const QByteArray& content;
180};182};
181 183
182NetworkTexturePointer TextureCache::getTexture(const QUrl& url, bool normalMap, bool dilatable, const QByteArray& content) {184NetworkTexturePointer 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
292QSharedPointer<Resource> TextureCache::createResource(const QUrl& url,294QSharedPointer<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
319NetworkTexture::NetworkTexture(const QUrl& url, bool normalMap, const QByteArray& content) :321NetworkTexture::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/blue329 // 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 pointer350 // 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
467DilatableNetworkTexture::DilatableNetworkTexture(const QUrl& url, const QByteArray& content) :485DilatableNetworkTexture::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{