Support FBO attachment to cubemaps
TRAC #11364
Signed-off-by: Nicolas Capens
Signed-off-by: Daniel Koch
Author: Andrew Lewycky
git-svn-id: https://angleproject.googlecode.com/svn/trunk@172 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 5afb6fd..1edbfa1 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -1636,34 +1636,40 @@
if (context)
{
- if (texture)
+ if (texture == 0)
{
+ textarget = GL_NONE;
+ }
+ else
+ {
+ gl::Texture *tex = context->getTexture(texture);
+
+ if (tex == NULL)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+
switch (textarget)
{
case GL_TEXTURE_2D:
- if (!context->getTexture2D())
+ if (tex->getTarget() != GL_TEXTURE_2D)
{
return error(GL_INVALID_OPERATION);
}
break;
+
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
- UNIMPLEMENTED(); // FIXME
- break;
case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
- UNIMPLEMENTED(); // FIXME
- break;
case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
- UNIMPLEMENTED(); // FIXME
- break;
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
- UNIMPLEMENTED(); // FIXME
- break;
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
- UNIMPLEMENTED(); // FIXME
- break;
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
- UNIMPLEMENTED(); // FIXME
+ if (tex->getTarget() != GL_TEXTURE_CUBE_MAP)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
break;
+
default:
return error(GL_INVALID_ENUM);
}
@@ -1681,7 +1687,7 @@
return error(GL_INVALID_OPERATION);
}
- framebuffer->setColorbuffer(GL_TEXTURE, texture);
+ framebuffer->setColorbuffer(textarget, texture);
}
}
catch(std::bad_alloc&)