mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
Hopefully fix a couple potential issues with restoring Shader texture units after a setMode.
--HG-- branch : minor
This commit is contained in:
@@ -237,6 +237,15 @@ void Shader::mapActiveUniforms()
|
||||
if (u.location == -1)
|
||||
continue;
|
||||
|
||||
if (u.baseType == UNIFORM_SAMPLER)
|
||||
{
|
||||
// Initialize all samplers to 0. Both GLSL and GLSL ES are supposed
|
||||
// to do this themselves, but some Android devices (galaxy tab 3 and
|
||||
// 4) don't seem to do it...
|
||||
// NOTE: We also restore previously set texture units below.
|
||||
glUniform1iv(u.location, u.count, u.ints);
|
||||
}
|
||||
|
||||
// Make sure previously set uniform data is preserved, and shader-
|
||||
// initialized values are retrieved.
|
||||
auto oldu = olduniforms.find(u.name);
|
||||
@@ -294,11 +303,6 @@ void Shader::mapActiveUniforms()
|
||||
|
||||
if (u.baseType == UNIFORM_SAMPLER)
|
||||
{
|
||||
// Initialize all samplers to 0. Both GLSL and GLSL ES are
|
||||
// supposed to do this themselves, but some Android devices
|
||||
// (galaxy tab 3 and 4) don't seem to do it...
|
||||
glUniform1iv(u.location, u.count, u.ints);
|
||||
|
||||
u.textures = new Texture*[u.count];
|
||||
memset(u.textures, 0, sizeof(Texture *) * u.count);
|
||||
}
|
||||
@@ -679,7 +683,7 @@ void Shader::sendTextures(const UniformInfo *info, Texture **textures, int count
|
||||
return;
|
||||
|
||||
count = std::min(count, info->count);
|
||||
bool updateuniform = false;
|
||||
bool updateuniform = internalUpdate;
|
||||
|
||||
// Make sure the shader's samplers are associated with texture units.
|
||||
for (int i = 0; i < count; i++)
|
||||
|
||||
Reference in New Issue
Block a user