OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/output/geometry_binding.h" | 5 #include "cc/output/geometry_binding.h" |
6 | 6 |
7 #include "cc/output/gl_renderer.h" // For the GLC() macro. | 7 #include "cc/output/gl_renderer.h" // For the GLC() macro. |
8 #include "gpu/command_buffer/client/gles2_interface.h" | 8 #include "gpu/command_buffer/client/gles2_interface.h" |
9 #include "ui/gfx/geometry/rect_f.h" | 9 #include "ui/gfx/geometry/rect_f.h" |
10 | 10 |
11 namespace cc { | 11 namespace cc { |
12 | 12 |
13 GeometryBinding::GeometryBinding(gpu::gles2::GLES2Interface* gl, | 13 GeometryBinding::GeometryBinding(gpu::gles2::GLES2Interface* gl, |
14 const gfx::RectF& quad_vertex_rect) | 14 const gfx::RectF& quad_vertex_rect) |
15 : gl_(gl), quad_vertices_vbo_(0), quad_elements_vbo_(0) { | 15 : gl_(gl), quad_vertices_vbo_(0), quad_elements_vbo_(0) { |
16 struct Vertex { | 16 struct Vertex { |
17 float a_position[3]; | 17 float a_position[3]; |
18 float a_texCoord[2]; | 18 float a_texCoord[2]; |
19 // Index of the vertex, divide by 4 to have the matrix for this quad. | 19 // Index of the vertex, divide by 4 to have the matrix for this quad. |
20 float a_index; | 20 float a_index; |
21 }; | 21 }; |
22 struct Quad { | 22 struct Quad { |
23 Vertex v0, v1, v2, v3; | 23 Vertex v0, v1, v2, v3; |
24 }; | 24 }; |
25 struct QuadIndex { | 25 struct QuadIndex { |
26 uint16 data[6]; | 26 uint16 data[6]; |
27 }; | 27 }; |
28 | 28 |
29 COMPILE_ASSERT(sizeof(Quad) == 24 * sizeof(float), struct_is_densely_packed); | 29 static_assert(sizeof(Quad) == 24 * sizeof(float), |
30 COMPILE_ASSERT(sizeof(QuadIndex) == 6 * sizeof(uint16_t), | 30 "struct Quad should be densely packed"); |
31 struct_is_densely_packed); | 31 static_assert(sizeof(QuadIndex) == 6 * sizeof(uint16_t), |
| 32 "struct QuadIndex should be densely packed"); |
32 | 33 |
33 Quad quad_list[8]; | 34 Quad quad_list[8]; |
34 QuadIndex quad_index_list[8]; | 35 QuadIndex quad_index_list[8]; |
35 for (int i = 0; i < 8; i++) { | 36 for (int i = 0; i < 8; i++) { |
36 Vertex v0 = {{quad_vertex_rect.x(), quad_vertex_rect.bottom(), 0.0f, }, | 37 Vertex v0 = {{quad_vertex_rect.x(), quad_vertex_rect.bottom(), 0.0f, }, |
37 {0.0f, 1.0f, }, i * 4.0f + 0.0f}; | 38 {0.0f, 1.0f, }, i * 4.0f + 0.0f}; |
38 Vertex v1 = {{quad_vertex_rect.x(), quad_vertex_rect.y(), 0.0f, }, | 39 Vertex v1 = {{quad_vertex_rect.x(), quad_vertex_rect.y(), 0.0f, }, |
39 {0.0f, 0.0f, }, i * 4.0f + 1.0f}; | 40 {0.0f, 0.0f, }, i * 4.0f + 1.0f}; |
40 Vertex v2 = {{quad_vertex_rect.right(), quad_vertex_rect.y(), 0.0f, }, | 41 Vertex v2 = {{quad_vertex_rect.right(), quad_vertex_rect.y(), 0.0f, }, |
41 {1.0f, .0f, }, i * 4.0f + 2.0f}; | 42 {1.0f, .0f, }, i * 4.0f + 2.0f}; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 GLC(gl_, gl_->VertexAttribPointer(TexCoordAttribLocation(), 2, GL_FLOAT, | 88 GLC(gl_, gl_->VertexAttribPointer(TexCoordAttribLocation(), 2, GL_FLOAT, |
88 false, 6 * sizeof(float), offsets[1])); | 89 false, 6 * sizeof(float), offsets[1])); |
89 GLC(gl_, gl_->VertexAttribPointer(TriangleIndexAttribLocation(), 1, GL_FLOAT, | 90 GLC(gl_, gl_->VertexAttribPointer(TriangleIndexAttribLocation(), 1, GL_FLOAT, |
90 false, 6 * sizeof(float), offsets[2])); | 91 false, 6 * sizeof(float), offsets[2])); |
91 GLC(gl_, gl_->EnableVertexAttribArray(PositionAttribLocation())); | 92 GLC(gl_, gl_->EnableVertexAttribArray(PositionAttribLocation())); |
92 GLC(gl_, gl_->EnableVertexAttribArray(TexCoordAttribLocation())); | 93 GLC(gl_, gl_->EnableVertexAttribArray(TexCoordAttribLocation())); |
93 GLC(gl_, gl_->EnableVertexAttribArray(TriangleIndexAttribLocation())); | 94 GLC(gl_, gl_->EnableVertexAttribArray(TriangleIndexAttribLocation())); |
94 } | 95 } |
95 | 96 |
96 } // namespace cc | 97 } // namespace cc |
OLD | NEW |