From 4fa458d653a0db6ba6421833e1880377c864f755 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Sun, 24 Jun 2012 09:25:55 +0000 Subject: [PATCH] gpu: disable framebuffer objects on GL ES for now, and disable integer attributes if GL version isn't 3.0 at least. --- src/gpu/framebuffer.cpp | 20 +++++++++++++++----- src/gpu/vertexbuffer.cpp | 2 ++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/gpu/framebuffer.cpp b/src/gpu/framebuffer.cpp index 92779780..e335d239 100644 --- a/src/gpu/framebuffer.cpp +++ b/src/gpu/framebuffer.cpp @@ -60,7 +60,8 @@ FrameBuffer::FrameBuffer(ivec2 size) { m_data->m_size = size; #if defined USE_D3D9 || defined _XBOX -#elif !defined __CELLOS_LV2__ && !defined __ANDROID__ + /* FIXME: not implemented on Direct3D */ +#elif GL_VERSION_1_1 GLenum format = GL_RGBA8; GLenum depth = GL_DEPTH_COMPONENT; GLenum wrapmode = GL_REPEAT; @@ -93,17 +94,21 @@ FrameBuffer::FrameBuffer(ivec2 size) glCheckFramebufferStatus(GL_FRAMEBUFFER); Unbind(); +#else + /* FIXME: not implemented on GL ES, see + * http://stackoverflow.com/q/4041682/111461 */ #endif } FrameBuffer::~FrameBuffer() { #if defined USE_D3D9 || defined _XBOX -#elif !defined __CELLOS_LV2__ && !defined __ANDROID__ +#elif GL_VERSION_1_1 glDeleteFramebuffers(1, &m_data->m_fbo); glDeleteTextures(1, &m_data->m_texture); if (m_data->m_depth != GL_INVALID_INDEX) glDeleteRenderbuffers(1, &m_data->m_depth); +#else #endif delete m_data; } @@ -111,24 +116,29 @@ FrameBuffer::~FrameBuffer() int FrameBuffer::GetTexture() const { #if defined USE_D3D9 || defined _XBOX -#elif !defined __CELLOS_LV2__ && !defined __ANDROID__ + return 0; +#elif GL_VERSION_1_1 return m_data->m_texture; +#else + return 0; #endif } void FrameBuffer::Bind() { #if defined USE_D3D9 || defined _XBOX -#elif !defined __CELLOS_LV2__ && !defined __ANDROID__ +#elif GL_VERSION_1_1 glBindFramebuffer(GL_FRAMEBUFFER, m_data->m_fbo); +#else #endif } void FrameBuffer::Unbind() { #if defined USE_D3D9 || defined _XBOX -#elif !defined __CELLOS_LV2__ && !defined __ANDROID__ +#elif GL_VERSION_1_1 glBindFramebuffer(GL_FRAMEBUFFER, NULL); +#else #endif } diff --git a/src/gpu/vertexbuffer.cpp b/src/gpu/vertexbuffer.cpp index cf32b6e0..90a8a10b 100644 --- a/src/gpu/vertexbuffer.cpp +++ b/src/gpu/vertexbuffer.cpp @@ -385,12 +385,14 @@ void VertexDeclaration::SetStream(VertexBuffer *vb, ShaderAttrib attr1, tlut[type_index].type, normalize, stride, (GLvoid const *)(uintptr_t)offset); } +# if defined GL_VERSION_3_0 else { glVertexAttribIPointer((GLint)reg, tlut[type_index].size, tlut[type_index].type, stride, (GLvoid const *)(uintptr_t)offset); } +# endif # else switch (usage) {