Allow other attachment points for glFramebufferTexture2D
TRAC #12040
Signed-off-by: Andrew Lewycky
Signed-off-by: Daniel Koch
Author: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@194 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index c751b18..bda72ea 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -730,7 +730,7 @@
try
{
- if (target != GL_TEXTURE_2D && !es2dx::IsCubemapTextureTarget(target))
+ if (!es2dx::IsTextureTarget(target))
{
return error(GL_INVALID_ENUM);
}
@@ -763,7 +763,7 @@
try
{
- if (target != GL_TEXTURE_2D && !es2dx::IsCubemapTextureTarget(target))
+ if (!es2dx::IsTextureTarget(target))
{
return error(GL_INVALID_ENUM);
}
@@ -902,7 +902,7 @@
try
{
- if (target != GL_TEXTURE_2D && !es2dx::IsCubemapTextureTarget(target))
+ if (!es2dx::IsTextureTarget(target))
{
return error(GL_INVALID_ENUM);
}
@@ -1627,6 +1627,8 @@
switch (attachment)
{
case GL_COLOR_ATTACHMENT0:
+ case GL_DEPTH_ATTACHMENT:
+ case GL_STENCIL_ATTACHMENT:
break;
default:
return error(GL_INVALID_ENUM);
@@ -1687,7 +1689,12 @@
return error(GL_INVALID_OPERATION);
}
- framebuffer->setColorbuffer(textarget, texture);
+ switch (attachment)
+ {
+ case GL_COLOR_ATTACHMENT0: framebuffer->setColorbuffer(textarget, texture); break;
+ case GL_DEPTH_ATTACHMENT: framebuffer->setDepthbuffer(textarget, texture); break;
+ case GL_STENCIL_ATTACHMENT: framebuffer->setStencilbuffer(textarget, texture); break;
+ }
}
}
catch(std::bad_alloc&)
@@ -2263,11 +2270,11 @@
}
GLenum attachmentObjectType; // Type category
- if (attachmentType == GL_NONE || attachmentType == GL_RENDERBUFFER)
+ if (attachmentType == GL_NONE || attachmentType == GL_RENDERBUFFER)
{
attachmentObjectType = attachmentType;
}
- else if (attachmentType == GL_TEXTURE_2D || es2dx::IsCubemapTextureTarget(attachmentType))
+ else if (es2dx::IsTextureTarget(attachmentType))
{
attachmentObjectType = GL_TEXTURE;
}
@@ -4125,7 +4132,7 @@
try
{
- if (target != GL_TEXTURE_2D && !es2dx::IsCubemapTextureTarget(target))
+ if (!es2dx::IsTextureTarget(target))
{
return error(GL_INVALID_ENUM);
}