diff options
Diffstat (limited to 'chromium/cc/output/geometry_binding.h')
-rw-r--r-- | chromium/cc/output/geometry_binding.h | 61 |
1 files changed, 41 insertions, 20 deletions
diff --git a/chromium/cc/output/geometry_binding.h b/chromium/cc/output/geometry_binding.h index cfa21efd1fc..de7cfc90b62 100644 --- a/chromium/cc/output/geometry_binding.h +++ b/chromium/cc/output/geometry_binding.h @@ -6,43 +6,64 @@ #define CC_OUTPUT_GEOMETRY_BINDING_H_ #include "base/basictypes.h" +#include "gpu/command_buffer/client/gles2_interface.h" #include "third_party/khronos/GLES2/gl2.h" +#include "third_party/khronos/GLES2/gl2ext.h" +#include "ui/gfx/geometry/rect_f.h" namespace gfx { -class RectF; -} -namespace gpu { -namespace gles2 { -class GLES2Interface; -} +class QuadF; +class Quad; +class QuadIndex; +class PointF; } namespace cc { -class GeometryBinding { - public: - GeometryBinding(gpu::gles2::GLES2Interface* gl, - const gfx::RectF& quad_vertex_rect); - ~GeometryBinding(); +struct GeometryBindingVertex { + float a_position[3]; + float a_texCoord[2]; + // Index of the vertex, divide by 4 to have the matrix for this quad. + float a_index; +}; + +struct GeometryBindingQuad { + GeometryBindingQuad(); + GeometryBindingQuad(const GeometryBindingVertex& vert0, + const GeometryBindingVertex& vert1, + const GeometryBindingVertex& vert2, + const GeometryBindingVertex& vert3); + GeometryBindingVertex v0, v1, v2, v3; +}; + +struct GeometryBindingQuadIndex { + GeometryBindingQuadIndex(); + GeometryBindingQuadIndex(uint16 index0, + uint16 index1, + uint16 index2, + uint16 index3, + uint16 index4, + uint16 index5); - void PrepareForDraw(); + uint16 data[6]; +}; + +class DrawQuad; +class DrawPolygon; +struct GeometryBinding { // All layer shaders share the same attribute locations for the vertex // positions and texture coordinates. This allows switching shaders without // rebinding attribute arrays. static int PositionAttribLocation() { return 0; } static int TexCoordAttribLocation() { return 1; } static int TriangleIndexAttribLocation() { return 2; } - - private: - gpu::gles2::GLES2Interface* gl_; - - GLuint quad_vertices_vbo_; - GLuint quad_elements_vbo_; - - DISALLOW_COPY_AND_ASSIGN(GeometryBinding); }; +void SetupGLContext(gpu::gles2::GLES2Interface* gl, + GLuint quad_elements_vbo, + GLuint quad_vertices_vbo); + } // namespace cc #endif // CC_OUTPUT_GEOMETRY_BINDING_H_ |