All surfaces follow D3D Y convention, i.e. (0, 0) is "top-left" rather than GL's "bottom-left". This eliminates the need to flip the default FBO to the D3D convention using additional blits when presenting and reduces VRAM usage for redundant window sized surfaces.
I took out the gl_Position.y flip from the vertex shader so FBOs are rendered
according to D3D conventions.
Texture lookups are flipped on Y to compensate. Cube map +Y and -Y faces are swapped. Y is now flipped in various other places, including uploading and reading back texture data from / to system memory, functions that take pixel space coordinates, winding order for culling, the implementation of ddy, the calculation of gl_Position and gl_FragCoord in fragment shaders and the flipping of compressed texture tiles.
Review URL: http://codereview.appspot.com/3265041
git-svn-id: https://angleproject.googlecode.com/svn/trunk@536 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 543c0d2..da5920c 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -1105,7 +1105,7 @@
return error(GL_INVALID_OPERATION);
}
- texture->copyImage(level, internalformat, x, y, width, height, source);
+ texture->copyImage(level, internalformat, x, y, width, height, framebuffer);
}
else if (gl::IsCubemapTextureTarget(target))
{
@@ -1116,7 +1116,7 @@
return error(GL_INVALID_OPERATION);
}
- texture->copyImage(target, level, internalformat, x, y, width, height, source);
+ texture->copyImage(target, level, internalformat, x, y, width, height, framebuffer);
}
else UNREACHABLE();
}
@@ -1240,7 +1240,7 @@
return error(GL_INVALID_OPERATION);
}
- texture->copySubImage(target, level, xoffset, yoffset, x, y, width, height, source);
+ texture->copySubImage(target, level, xoffset, yoffset, x, y, width, height, framebuffer);
}
}