Allow texel buffers in OpenGL ES, when supported by the system.

This commit is contained in:
Alex Szpakowski
2022-01-01 18:06:50 -04:00
parent 813c9d1781
commit f88eecf482
3 changed files with 15 additions and 3 deletions
+5
View File
@@ -78,6 +78,11 @@ static const char global_syntax[] = R"(
#ifdef GL_OES_standard_derivatives
#extension GL_OES_standard_derivatives : enable
#endif
#if __VERSION__ >= 300 && defined(GL_OES_texture_buffer)
#extension GL_OES_texture_buffer : enable
#elif __VERSION__ >= 300 && defined(GL_EXT_texture_buffer)
#extension GL_EXT_texture_buffer : enable
#endif
)";
static const char render_uniforms[] = R"(
+8 -1
View File
@@ -151,7 +151,14 @@ bool Buffer::load(const void *initialdata)
glGenTextures(1, &texture);
gl.bindBufferTextureToUnit(texture, 0, false, true);
glTexBuffer(target, getGLFormat(getDataMember(0).decl.format), buffer);
GLenum glformat = getGLFormat(getDataMember(0).decl.format);
if (GLAD_VERSION_3_1)
glTexBuffer(target, glformat, buffer);
else if (GLAD_OES_texture_buffer)
glTexBufferOES(target, glformat, buffer);
else if (GLAD_EXT_texture_buffer)
glTexBufferEXT(target, glformat, buffer);
}
return (glGetError() == GL_NO_ERROR);
+2 -2
View File
@@ -1479,8 +1479,8 @@ bool OpenGL::isBufferUsageSupported(BufferUsage usage) const
case BUFFERUSAGE_INDEX:
return true;
case BUFFERUSAGE_TEXEL:
// Not supported in ES until 3.2, which we don't support shaders for...
return GLAD_VERSION_3_1;
// Not supported in ES until 3.2, so we rely on extensions there...
return GLAD_VERSION_3_1 || GLAD_OES_texture_buffer || GLAD_EXT_texture_buffer;
case BUFFERUSAGE_SHADER_STORAGE:
return (GLAD_VERSION_4_3 && isCoreProfile()) || GLAD_ES_VERSION_3_1;
case BUFFERUSAGE_MAX_ENUM: