summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQwerasd <qwerasd205@users.noreply.github.com>2025-06-25 10:53:42 -0600
committerMitchell Hashimoto <m@mitchellh.com>2025-06-25 16:27:23 -0400
commit5cb175ff63a93c5ed1fcc80dd0976d4ee6614db0 (patch)
treefe541035debaa12cc58a4e5a42a7bedd6df33965
parentda46a47726f39b5ca564d49ec397d76d4f1725ff (diff)
renderer/OpenGL: use compressed texture formats for images
BPTC is required to be available OpenGL >= 4.2 and our minimum is 4.3 so this is safe in terms of support. I tested briefly in a VM and didn't encounter any problems so this should just be a complete win. (Note: texture data is already automatically compressed on Metal)
-rw-r--r--pkg/opengl/Texture.zig6
-rw-r--r--src/renderer/OpenGL.zig2
-rw-r--r--src/renderer/opengl/Texture.zig1
3 files changed, 5 insertions, 4 deletions
diff --git a/pkg/opengl/Texture.zig b/pkg/opengl/Texture.zig
index 4a1d61433..2c8e05eff 100644
--- a/pkg/opengl/Texture.zig
+++ b/pkg/opengl/Texture.zig
@@ -74,6 +74,9 @@ pub const InternalFormat = enum(c_int) {
srgb = c.GL_SRGB8,
srgba = c.GL_SRGB8_ALPHA8,
+ rgba_compressed = c.GL_COMPRESSED_RGBA_BPTC_UNORM,
+ srgba_compressed = c.GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM,
+
// There are so many more that I haven't filled in.
_,
};
@@ -126,7 +129,6 @@ pub const Binding = struct {
internal_format: InternalFormat,
width: c.GLsizei,
height: c.GLsizei,
- border: c.GLint,
format: Format,
typ: DataType,
data: ?*const anyopaque,
@@ -137,7 +139,7 @@ pub const Binding = struct {
@intFromEnum(internal_format),
width,
height,
- border,
+ 0,
@intFromEnum(format),
@intFromEnum(typ),
data,
diff --git a/src/renderer/OpenGL.zig b/src/renderer/OpenGL.zig
index 3b4ba6d80..e112c0df7 100644
--- a/src/renderer/OpenGL.zig
+++ b/src/renderer/OpenGL.zig
@@ -395,7 +395,7 @@ pub inline fn textureOptions(self: OpenGL) Texture.Options {
_ = self;
return .{
.format = .rgba,
- .internal_format = .srgba,
+ .internal_format = .srgba_compressed,
.target = .@"2D",
};
}
diff --git a/src/renderer/opengl/Texture.zig b/src/renderer/opengl/Texture.zig
index 07123922f..9be2b7078 100644
--- a/src/renderer/opengl/Texture.zig
+++ b/src/renderer/opengl/Texture.zig
@@ -57,7 +57,6 @@ pub fn init(
opts.internal_format,
@intCast(width),
@intCast(height),
- 0,
opts.format,
.UnsignedByte,
if (data) |d| @ptrCast(d.ptr) else null,