233 | 233 |
.DOUBLE_MAT4x2 => |*value| c.glProgramUniformMatrix4x2dv(program, location, 1, c.GL_FALSE, value),
|
234 | 234 |
.DOUBLE_MAT4x3 => |*value| c.glProgramUniformMatrix4x3dv(program, location, 1, c.GL_FALSE, value),
|
235 | 235 |
.SAMPLER_1D, .SAMPLER_2D, .SAMPLER_3D, .SAMPLER_CUBE, .SAMPLER_1D_SHADOW, .SAMPLER_2D_SHADOW, .SAMPLER_1D_ARRAY, .SAMPLER_2D_ARRAY, .SAMPLER_1D_ARRAY_SHADOW, .SAMPLER_2D_ARRAY_SHADOW, .SAMPLER_2D_MULTISAMPLE, .SAMPLER_2D_MULTISAMPLE_ARRAY, .SAMPLER_CUBE_SHADOW, .SAMPLER_BUFFER, .SAMPLER_2D_RECT, .SAMPLER_2D_RECT_SHADOW, .INT_SAMPLER_1D, .INT_SAMPLER_2D, .INT_SAMPLER_3D, .INT_SAMPLER_CUBE, .INT_SAMPLER_1D_ARRAY, .INT_SAMPLER_2D_ARRAY, .INT_SAMPLER_2D_MULTISAMPLE, .INT_SAMPLER_2D_MULTISAMPLE_ARRAY, .INT_SAMPLER_BUFFER, .INT_SAMPLER_2D_RECT, .UNSIGNED_INT_SAMPLER_1D, .UNSIGNED_INT_SAMPLER_2D, .UNSIGNED_INT_SAMPLER_3D, .UNSIGNED_INT_SAMPLER_CUBE, .UNSIGNED_INT_SAMPLER_1D_ARRAY, .UNSIGNED_INT_SAMPLER_2D_ARRAY, .UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, .UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, .UNSIGNED_INT_SAMPLER_BUFFER, .UNSIGNED_INT_SAMPLER_2D_RECT => |value| c.glProgramUniform1i(program, location, value),
|
236 | |
else => unreachable,
|
237 | 236 |
}
|
238 | 237 |
}
|
239 | 238 |
|
|
281 | 280 |
.DOUBLE_MAT4x2 => |*value| c.glGetUniformdv(program, location, value),
|
282 | 281 |
.DOUBLE_MAT4x3 => |*value| c.glGetUniformdv(program, location, value),
|
283 | 282 |
.SAMPLER_1D, .SAMPLER_2D, .SAMPLER_3D, .SAMPLER_CUBE, .SAMPLER_1D_SHADOW, .SAMPLER_2D_SHADOW, .SAMPLER_1D_ARRAY, .SAMPLER_2D_ARRAY, .SAMPLER_1D_ARRAY_SHADOW, .SAMPLER_2D_ARRAY_SHADOW, .SAMPLER_2D_MULTISAMPLE, .SAMPLER_2D_MULTISAMPLE_ARRAY, .SAMPLER_CUBE_SHADOW, .SAMPLER_BUFFER, .SAMPLER_2D_RECT, .SAMPLER_2D_RECT_SHADOW, .INT_SAMPLER_1D, .INT_SAMPLER_2D, .INT_SAMPLER_3D, .INT_SAMPLER_CUBE, .INT_SAMPLER_1D_ARRAY, .INT_SAMPLER_2D_ARRAY, .INT_SAMPLER_2D_MULTISAMPLE, .INT_SAMPLER_2D_MULTISAMPLE_ARRAY, .INT_SAMPLER_BUFFER, .INT_SAMPLER_2D_RECT, .UNSIGNED_INT_SAMPLER_1D, .UNSIGNED_INT_SAMPLER_2D, .UNSIGNED_INT_SAMPLER_3D, .UNSIGNED_INT_SAMPLER_CUBE, .UNSIGNED_INT_SAMPLER_1D_ARRAY, .UNSIGNED_INT_SAMPLER_2D_ARRAY, .UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, .UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, .UNSIGNED_INT_SAMPLER_BUFFER, .UNSIGNED_INT_SAMPLER_2D_RECT => |*value| c.glGetnUniformiv(program, location, @sizeOf(@TypeOf(value.*)), value),
|
284 | |
else => unreachable,
|
285 | 283 |
}
|
286 | 284 |
}
|
287 | 285 |
// zig fmt: on
|
|
363 | 361 |
self.allocator.free(entry.key);
|
364 | 362 |
}
|
365 | 363 |
|
366 | |
self.uniforms.clear();
|
367 | 364 |
self.uniforms.deinit();
|
368 | 365 |
}
|
369 | 366 |
|
|
403 | 400 |
self.allocator.free(removed.key);
|
404 | 401 |
}
|
405 | 402 |
} else {
|
406 | |
var uniform = self.uniforms.get(name).?.value;
|
|
403 |
var uniform = self.uniforms.get(name).?;
|
407 | 404 |
uniform.location = self.shader.uniformLocation(name.ptr) catch unreachable;
|
408 | 405 |
uniform.setShaderValue(self.shader.*);
|
409 | 406 |
}
|
|
417 | 414 |
|
418 | 415 |
var result = try self.uniforms.getOrPut(cloned_name);
|
419 | 416 |
if (!result.found_existing) {
|
420 | |
result.kv.value = CachedUniform.init(self.shader.*, name.ptr) catch {
|
|
417 |
result.entry.value = CachedUniform.init(self.shader.*, name.ptr) catch {
|
421 | 418 |
_ = self.uniforms.remove(cloned_name);
|
422 | 419 |
self.allocator.free(cloned_name);
|
423 | 420 |
return null;
|
424 | 421 |
};
|
425 | 422 |
}
|
426 | 423 |
|
427 | |
return &result.kv.value;
|
|
424 |
return &result.entry.value;
|
428 | 425 |
}
|
429 | 426 |
};
|
430 | 427 |
|