OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "examples/ui/spinning_cube/spinning_cube_view.h" | 5 #include "examples/ui/spinning_cube/spinning_cube_view.h" |
6 | 6 |
7 #ifndef GL_GLEXT_PROTOTYPES | 7 #ifndef GL_GLEXT_PROTOTYPES |
8 #define GL_GLEXT_PROTOTYPES | 8 #define GL_GLEXT_PROTOTYPES |
9 #endif | 9 #endif |
10 | 10 |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 auto update = mojo::gfx::composition::SceneUpdate::New(); | 156 auto update = mojo::gfx::composition::SceneUpdate::New(); |
157 mojo::gfx::composition::ResourcePtr cube_resource = gl_renderer()->DrawGL( | 157 mojo::gfx::composition::ResourcePtr cube_resource = gl_renderer()->DrawGL( |
158 size_, true, | 158 size_, true, |
159 base::Bind(&SpinningCubeView::DrawCubeWithGL, base::Unretained(this))); | 159 base::Bind(&SpinningCubeView::DrawCubeWithGL, base::Unretained(this))); |
160 DCHECK(cube_resource); | 160 DCHECK(cube_resource); |
161 update->resources.insert(kCubeImageResourceId, cube_resource.Pass()); | 161 update->resources.insert(kCubeImageResourceId, cube_resource.Pass()); |
162 | 162 |
163 auto root_node = mojo::gfx::composition::Node::New(); | 163 auto root_node = mojo::gfx::composition::Node::New(); |
164 root_node->content_transform = mojo::Transform::New(); | 164 root_node->content_transform = mojo::Transform::New(); |
165 mojo::SetIdentityTransform(root_node->content_transform.get()); | 165 mojo::SetIdentityTransform(root_node->content_transform.get()); |
166 // TODO(jeffbrown): Figure out why spinning cube is drawing upside down. | |
167 // Other GL based programs don't seem to have this problem. | |
168 root_node->content_transform->matrix[5] = -1; // flip image vertically | |
169 root_node->content_transform->matrix[7] = size_.height; | |
170 root_node->op = mojo::gfx::composition::NodeOp::New(); | 166 root_node->op = mojo::gfx::composition::NodeOp::New(); |
171 root_node->op->set_image(mojo::gfx::composition::ImageNodeOp::New()); | 167 root_node->op->set_image(mojo::gfx::composition::ImageNodeOp::New()); |
172 root_node->op->get_image()->content_rect = bounds.Clone(); | 168 root_node->op->get_image()->content_rect = bounds.Clone(); |
173 root_node->op->get_image()->image_resource_id = kCubeImageResourceId; | 169 root_node->op->get_image()->image_resource_id = kCubeImageResourceId; |
174 update->nodes.insert(kRootNodeId, root_node.Pass()); | 170 update->nodes.insert(kRootNodeId, root_node.Pass()); |
175 | 171 |
176 auto metadata = mojo::gfx::composition::SceneMetadata::New(); | 172 auto metadata = mojo::gfx::composition::SceneMetadata::New(); |
177 metadata->presentation_time = frame_info.presentation_time; | 173 metadata->presentation_time = frame_info.presentation_time; |
178 | 174 |
179 // Publish the scene. | 175 // Publish the scene. |
180 scene()->Update(update.Pass()); | 176 scene()->Update(update.Pass()); |
181 scene()->Publish(metadata.Pass()); | 177 scene()->Publish(metadata.Pass()); |
182 | 178 |
183 // Loop! | 179 // Loop! |
184 choreographer_.ScheduleDraw(); | 180 choreographer_.ScheduleDraw(); |
185 } | 181 } |
186 | 182 |
187 void SpinningCubeView::DrawCubeWithGL() { | 183 void SpinningCubeView::DrawCubeWithGL() { |
188 cube_.set_size(size_.width, size_.height); | 184 cube_.set_size(size_.width, size_.height); |
189 cube_.Draw(); | 185 cube_.Draw(); |
190 } | 186 } |
191 | 187 |
192 } // namespace examples | 188 } // namespace examples |
OLD | NEW |