[Enhanced Bookmark] Change "Bookmark Bar" to "Bookmark bar" on Android
[chromium-blink-merge.git] / cc / output / geometry_binding.cc
blob88a37deee82924cc137d58510ff739057d66fe40
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.
5 #include "cc/output/geometry_binding.h"
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"
11 namespace cc {
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));
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] = {
24 reinterpret_cast<const void*>(3 * sizeof(float)),
25 reinterpret_cast<const void*>(5 * sizeof(float)),
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()));
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};
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;
62 GeometryBindingQuadIndex::GeometryBindingQuadIndex() {
63 memset(data, 0x0, sizeof(data));
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;
80 } // namespace cc