summaryrefslogtreecommitdiffstats
path: root/cc/output/dynamic_geometry_binding.h
diff options
context:
space:
mode:
authorawoloszyn <awoloszyn@chromium.org>2015-03-11 09:54:03 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-11 16:55:00 +0000
commit7e2af77dcd3b5df086be3421fad40b719779381c (patch)
tree94b166b79766a1d66c5bfcf8dfe89333a95c2715 /cc/output/dynamic_geometry_binding.h
parent61df875a6996c00838b8d6857b7c098a55a44e39 (diff)
downloadchromium_src-7e2af77dcd3b5df086be3421fad40b719779381c.zip
chromium_src-7e2af77dcd3b5df086be3421fad40b719779381c.tar.gz
chromium_src-7e2af77dcd3b5df086be3421fad40b719779381c.tar.bz2
Splitting of layers for correct intersections
Sorting 3d-sorted layers and rendering them in that order causes issues when layers intersect. Instead place 3d-sorted layers in a bsp tree and fragment any intersecting layers into non-rectangular quads. We can then render the fragments in the correct sorted order regardless of intersections. BUG=455918,159225,132122,230833 Review URL: https://codereview.chromium.org/595593002 Cr-Commit-Position: refs/heads/master@{#320096}
Diffstat (limited to 'cc/output/dynamic_geometry_binding.h')
-rw-r--r--cc/output/dynamic_geometry_binding.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/cc/output/dynamic_geometry_binding.h b/cc/output/dynamic_geometry_binding.h
new file mode 100644
index 0000000..4e4ea3d
--- /dev/null
+++ b/cc/output/dynamic_geometry_binding.h
@@ -0,0 +1,30 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CC_OUTPUT_DYNAMIC_GEOMETRY_BINDING_H_
+#define CC_OUTPUT_DYNAMIC_GEOMETRY_BINDING_H_
+
+#include "cc/output/geometry_binding.h"
+
+namespace cc {
+
+class DynamicGeometryBinding {
+ public:
+ explicit DynamicGeometryBinding(gpu::gles2::GLES2Interface* gl);
+ void PrepareForDraw();
+ void InitializeCustomQuad(const gfx::QuadF& quad);
+ void InitializeCustomQuadWithUVs(const gfx::QuadF& quad, const float uv[8]);
+
+ private:
+ gpu::gles2::GLES2Interface* gl_;
+
+ GLuint quad_vertices_vbo_;
+ GLuint quad_elements_vbo_;
+
+ DISALLOW_COPY_AND_ASSIGN(DynamicGeometryBinding);
+};
+
+} // namespace cc
+
+#endif // CC_OUTPUT_DYNAMIC_GEOMETRY_BINDING_H_