| // Copyright 2011 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_GEOMETRY_BINDING_H_ |
| #define CC_OUTPUT_GEOMETRY_BINDING_H_ |
| |
| #include "base/basictypes.h" |
| #include "third_party/khronos/GLES2/gl2.h" |
| |
| namespace gfx { |
| class RectF; |
| } |
| namespace gpu { |
| namespace gles2 { |
| class GLES2Interface; |
| } |
| } |
| |
| namespace cc { |
| |
| class GeometryBinding { |
| public: |
| GeometryBinding(gpu::gles2::GLES2Interface* gl, |
| const gfx::RectF& quad_vertex_rect); |
| ~GeometryBinding(); |
| |
| void PrepareForDraw(); |
| |
| // 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); |
| }; |
| |
| } // namespace cc |
| |
| #endif // CC_OUTPUT_GEOMETRY_BINDING_H_ |