Merge pull request #1066 from ey6es/master

Have textures default to white when they fail to load.
This commit is contained in:
Andrzej Kapolka 2013-10-16 11:01:56 -07:00
commit d3c3e330e0

View file

@ -74,15 +74,17 @@ GLuint TextureCache::getPermutationNormalTextureID() {
return _permutationNormalTextureID; return _permutationNormalTextureID;
} }
static void loadWhiteTexture() {
const char OPAQUE_WHITE[] = { 0xFF, 0xFF, 0xFF, 0xFF };
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, OPAQUE_WHITE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}
GLuint TextureCache::getWhiteTextureID() { GLuint TextureCache::getWhiteTextureID() {
if (_whiteTextureID == 0) { if (_whiteTextureID == 0) {
glGenTextures(1, &_whiteTextureID); glGenTextures(1, &_whiteTextureID);
glBindTexture(GL_TEXTURE_2D, _whiteTextureID); glBindTexture(GL_TEXTURE_2D, _whiteTextureID);
loadWhiteTexture();
const char OPAQUE_WHITE[] = { 0xFF, 0xFF, 0xFF, 0xFF };
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, OPAQUE_WHITE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
} }
return _whiteTextureID; return _whiteTextureID;
@ -214,6 +216,11 @@ NetworkTexture::NetworkTexture(const QUrl& url) : _reply(NULL), _averageColor(1.
connect(_reply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(handleDownloadProgress(qint64,qint64))); connect(_reply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(handleDownloadProgress(qint64,qint64)));
connect(_reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(handleReplyError())); connect(_reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(handleReplyError()));
// default to white
glBindTexture(GL_TEXTURE_2D, getID());
loadWhiteTexture();
glBindTexture(GL_TEXTURE_2D, 0);
} }
NetworkTexture::~NetworkTexture() { NetworkTexture::~NetworkTexture() {