Skip to content

Commit 7c1c9a5

Browse files
committed
[Fix] (Texture): Correct GL_RED handling.
1 parent efea437 commit 7c1c9a5

1 file changed

Lines changed: 29 additions & 1 deletion

File tree

src/main/cpp/gl/texture.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,35 @@ void internal_convert(GLenum* internal_format, GLenum* type, GLenum* format) {
157157
if (format) *format = GL_RED;
158158
if (type) *type = GL_HALF_FLOAT;
159159
break;
160-
case GL_R32F:
160+
case GL_RED:
161+
if (type) {
162+
switch (*type) {
163+
case GL_UNSIGNED_BYTE:
164+
*internal_format = GL_R8;
165+
if (format) *format = GL_RED;
166+
break;
167+
case GL_BYTE:
168+
*internal_format = GL_R8_SNORM;
169+
if (format) *format = GL_RED;
170+
break;
171+
case GL_HALF_FLOAT:
172+
*internal_format = GL_R16F;
173+
if (format) *format = GL_RED;
174+
break;
175+
case GL_FLOAT:
176+
*internal_format = GL_R32F;
177+
if (format) *format = GL_RED;
178+
break;
179+
default:
180+
LOG_E("Unsupported type for GL_RED: %s", glEnumToString(*type));
181+
if (type) *type = GL_UNSIGNED_BYTE; // Fallback to unsigned byte
182+
*internal_format = GL_R8; // Fallback to R8
183+
if (format) *format = GL_RED;
184+
break;
185+
}
186+
}
187+
188+
*internal_format = GL_R32F;
161189
if (format) *format = GL_RED;
162190
if (type) *type = GL_FLOAT;
163191
break;

0 commit comments

Comments
 (0)