OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "cc/output/geometry_binding.h" | |
6 | |
7 #include "cc/output/gl_renderer.h" // For the GLC() macro. | |
8 #include "gpu/command_buffer/client/gles2_interface.h" | |
9 #include "ui/gfx/geometry/rect_f.h" | |
10 | |
11 namespace cc { | |
12 | |
13 void SetupGLContext(gpu::gles2::GLES2Interface* gl, | |
14 GLuint quad_elements_vbo, | |
15 GLuint quad_vertices_vbo) { | |
16 GLC(gl, gl->BindBuffer(GL_ELEMENT_ARRAY_BUFFER, quad_elements_vbo)); | |
17 | |
18 GLC(gl, gl->BindBuffer(GL_ARRAY_BUFFER, quad_vertices_vbo)); | |
19 // OpenGL defines the last parameter to VertexAttribPointer as type | |
20 // "const GLvoid*" even though it is actually an offset into the buffer | |
21 // object's data store and not a pointer to the client's address space. | |
22 const void* offsets[3] = { | |
23 0, | |
24 reinterpret_cast<const void*>(3 * sizeof(float)), | |
25 reinterpret_cast<const void*>(5 * sizeof(float)), | |
26 }; | |
27 | |
28 GLC(gl, | |
29 gl->VertexAttribPointer(GeometryBinding::PositionAttribLocation(), 3, | |
30 GL_FLOAT, false, 6 * sizeof(float), offsets[0])); | |
31 GLC(gl, | |
32 gl->VertexAttribPointer(GeometryBinding::TexCoordAttribLocation(), 2, | |
33 GL_FLOAT, false, 6 * sizeof(float), offsets[1])); | |
34 GLC(gl, | |
35 gl->VertexAttribPointer(GeometryBinding::TriangleIndexAttribLocation(), 1, | |
36 GL_FLOAT, false, 6 * sizeof(float), offsets[2])); | |
37 GLC(gl, | |
38 gl->EnableVertexAttribArray(GeometryBinding::PositionAttribLocation())); | |
39 GLC(gl, | |
40 gl->EnableVertexAttribArray(GeometryBinding::TexCoordAttribLocation())); | |
41 GLC(gl, gl->EnableVertexAttribArray( | |
42 GeometryBinding::TriangleIndexAttribLocation())); | |
43 } | |
44 | |
45 GeometryBindingQuad::GeometryBindingQuad() { | |
46 v0 = {{0, 0, 0}, {0, 0}, 0}; | |
47 v1 = {{0, 0, 0}, {0, 0}, 0}; | |
48 v2 = {{0, 0, 0}, {0, 0}, 0}; | |
49 v3 = {{0, 0, 0}, {0, 0}, 0}; | |
50 } | |
51 | |
52 GeometryBindingQuad::GeometryBindingQuad(const GeometryBindingVertex& vert0, | |
53 const GeometryBindingVertex& vert1, | |
54 const GeometryBindingVertex& vert2, | |
55 const GeometryBindingVertex& vert3) { | |
56 v0 = vert0; | |
57 v1 = vert1; | |
58 v2 = vert2; | |
59 v3 = vert3; | |
60 } | |
61 | |
62 GeometryBindingQuadIndex::GeometryBindingQuadIndex() { | |
63 memset(data, 0x0, sizeof(data)); | |
64 } | |
65 | |
66 GeometryBindingQuadIndex::GeometryBindingQuadIndex(uint16 index0, | |
67 uint16 index1, | |
68 uint16 index2, | |
69 uint16 index3, | |
70 uint16 index4, | |
71 uint16 index5) { | |
72 data[0] = index0; | |
73 data[1] = index1; | |
74 data[2] = index2; | |
75 data[3] = index3; | |
76 data[4] = index4; | |
77 data[5] = index5; | |
78 } | |
79 | |
80 } // namespace cc | |
OLD | NEW |