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
145145 }
146146
147147 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 };
148150 const unsigned char OPAQUE_BLUE[] = { 0x80, 0x80, 0xFF, 0xFF };
149151
150152 static void loadSingleColorTexture(const unsigned char* color) {
@@ -175,13 +177,13 @@ GLuint TextureCache::getBlueTextureID() { · 24 unmodified lines
175177 /// Extra data for creating textures.
176178 class TextureExtra {
177179 public:
178− bool normalMap;
180+ TextureType type;
179181 const QByteArray& content;
180182 };
181183
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) {
183185 if (!dilatable) {
184− TextureExtra extra = { normalMap, content };
186+ TextureExtra extra = { type, content };
185187 return ResourceCache::getResource(url, QUrl(), false, &extra).staticCast<NetworkTexture>();
186188 }
187189 NetworkTexturePointer texture = _dilatableNetworkTextures.value(url);
@@ -292,7 +294,7 @@ bool TextureCache::eventFilter(QObject* watched, QEvent* event) { · 104 unmodified lines
292294 QSharedPointer<Resource> TextureCache::createResource(const QUrl& url,
293295 const QSharedPointer<Resource>& fallback, bool delayLoad, const void* extra) {
294296 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),
296298 &Resource::allReferencesCleared);
297299 }
298300
@@ -316,7 +318,7 @@ Texture::~Texture() { · 17 unmodified lines
316318 glDeleteTextures(1, &_id);
317319 }
318320
319−NetworkTexture::NetworkTexture(const QUrl& url, bool normalMap, const QByteArray& content) :
321+NetworkTexture::NetworkTexture(const QUrl& url, TextureType type, const QByteArray& content) :
320322 Resource(url, !content.isEmpty()),
321323 _translucent(false) {
322324
@@ -324,9 +326,25 @@ NetworkTexture::NetworkTexture(const QUrl& url, bool normalMap, const QByteArray · 1 unmodified line
324326 _loaded = true;
325327 }
326328
327− // default to white/blue
329+ // default to white/blue/black
328330 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+ }
330348 glBindTexture(GL_TEXTURE_2D, 0);
331349
332350 // 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
465483 }
466484
467485 DilatableNetworkTexture::DilatableNetworkTexture(const QUrl& url, const QByteArray& content) :
468− NetworkTexture(url, false, content),
486+ NetworkTexture(url, DEFAULT_TEXTURE, content),
469487 _innerRadius(0),
470488 _outerRadius(0)
471489 {