mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
Allow texel buffers in OpenGL ES, when supported by the system.
This commit is contained in:
@@ -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"(
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user