OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef GL_GLEXT_PROTOTYPES | 5 #ifndef GL_GLEXT_PROTOTYPES |
6 #define GL_GLEXT_PROTOTYPES | 6 #define GL_GLEXT_PROTOTYPES |
7 #endif | 7 #endif |
8 | 8 |
9 #include "examples/spinning_cube/gles2_client_impl.h" | 9 #include "examples/spinning_cube/gles2_client_impl.h" |
10 | 10 |
11 #include <GLES2/gl2.h> | |
12 #include <GLES2/gl2ext.h> | |
13 #include <GLES2/gl2extchromium.h> | |
14 #include <math.h> | 11 #include <math.h> |
15 #include <stdlib.h> | 12 #include <stdlib.h> |
16 | 13 |
17 #include "mojo/public/c/gles2/gles2.h" | 14 #include "mojo/public/c/gpu/MGL/mgl.h" |
| 15 #include "mojo/public/c/gpu/MGL/mgl_onscreen.h" |
18 #include "mojo/public/cpp/environment/environment.h" | 16 #include "mojo/public/cpp/environment/environment.h" |
19 #include "mojo/public/cpp/utility/run_loop.h" | 17 #include "mojo/public/cpp/utility/run_loop.h" |
20 | 18 |
21 namespace examples { | 19 namespace examples { |
22 namespace { | 20 namespace { |
23 | 21 |
24 float CalculateDragDistance(const mojo::PointF& start, | 22 float CalculateDragDistance(const mojo::PointF& start, |
25 const mojo::PointF& end) { | 23 const mojo::PointF& end) { |
26 return hypot(start.x - end.x, start.y - end.y); | 24 return hypot(start.x - end.x, start.y - end.y); |
27 } | 25 } |
28 | 26 |
29 float GetRandomColor() { | 27 float GetRandomColor() { |
30 return static_cast<float>(rand()) / static_cast<float>(RAND_MAX); | 28 return static_cast<float>(rand()) / static_cast<float>(RAND_MAX); |
31 } | 29 } |
32 | 30 |
33 } // namespace | 31 } // namespace |
34 | 32 |
35 GLES2ClientImpl::GLES2ClientImpl(mojo::ContextProviderPtr context_provider) | 33 GLES2ClientImpl::GLES2ClientImpl(mojo::ContextProviderPtr context_provider) |
36 : last_time_(mojo::GetTimeTicksNow()), | 34 : last_time_(mojo::GetTimeTicksNow()), |
37 waiting_to_draw_(false), | 35 waiting_to_draw_(false), |
38 context_provider_(context_provider.Pass()), | 36 context_provider_(context_provider.Pass()), |
39 context_(nullptr) { | 37 context_(nullptr) { |
40 context_provider_->Create(nullptr, | 38 context_provider_->Create(nullptr, |
41 [this](mojo::CommandBufferPtr command_buffer) { | 39 [this](mojo::CommandBufferPtr command_buffer) { |
42 ContextCreated(command_buffer.Pass()); | 40 ContextCreated(command_buffer.Pass()); |
43 }); | 41 }); |
44 } | 42 } |
45 | 43 |
46 GLES2ClientImpl::~GLES2ClientImpl() { | 44 GLES2ClientImpl::~GLES2ClientImpl() { |
47 MojoGLES2DestroyContext(context_); | 45 MGLDestroyContext(context_); |
48 } | 46 } |
49 | 47 |
50 void GLES2ClientImpl::SetSize(const mojo::Size& size) { | 48 void GLES2ClientImpl::SetSize(const mojo::Size& size) { |
51 size_ = size; | 49 size_ = size; |
52 cube_.set_size(size_.width, size_.height); | 50 cube_.set_size(size_.width, size_.height); |
53 if (size_.width == 0 || size_.height == 0 || !context_) | 51 if (size_.width == 0 || size_.height == 0 || !context_) |
54 return; | 52 return; |
55 glResizeCHROMIUM(size_.width, size_.height, 1.f); | 53 MGLResizeSurface(size_.width, size_.height); |
56 WantToDraw(); | 54 WantToDraw(); |
57 } | 55 } |
58 | 56 |
59 void GLES2ClientImpl::HandleInputEvent(const mojo::Event& event) { | 57 void GLES2ClientImpl::HandleInputEvent(const mojo::Event& event) { |
60 switch (event.action) { | 58 switch (event.action) { |
61 case mojo::EVENT_TYPE_POINTER_DOWN: | 59 case mojo::EVENT_TYPE_POINTER_DOWN: |
62 if (event.flags & mojo::EVENT_FLAGS_RIGHT_MOUSE_BUTTON) | 60 if (event.flags & mojo::EVENT_FLAGS_RIGHT_MOUSE_BUTTON) |
63 break; | 61 break; |
64 capture_point_.x = event.pointer_data->x; | 62 capture_point_.x = event.pointer_data->x; |
65 capture_point_.y = event.pointer_data->y; | 63 capture_point_.y = event.pointer_data->y; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 capture_point_ = last_drag_point_ = mojo::PointF(); | 98 capture_point_ = last_drag_point_ = mojo::PointF(); |
101 WantToDraw(); | 99 WantToDraw(); |
102 break; | 100 break; |
103 } | 101 } |
104 default: | 102 default: |
105 break; | 103 break; |
106 } | 104 } |
107 } | 105 } |
108 | 106 |
109 void GLES2ClientImpl::ContextCreated(mojo::CommandBufferPtr command_buffer) { | 107 void GLES2ClientImpl::ContextCreated(mojo::CommandBufferPtr command_buffer) { |
110 context_ = MojoGLES2CreateContext( | 108 context_ = MGLCreateContext( |
| 109 MGL_API_VERSION_GLES2, |
111 command_buffer.PassInterface().PassHandle().release().value(), | 110 command_buffer.PassInterface().PassHandle().release().value(), |
112 &ContextLostThunk, this, mojo::Environment::GetDefaultAsyncWaiter()); | 111 MGL_NO_CONTEXT, &ContextLostThunk, this, |
113 MojoGLES2MakeCurrent(context_); | 112 mojo::Environment::GetDefaultAsyncWaiter()); |
| 113 MGLMakeCurrent(context_); |
114 cube_.Init(); | 114 cube_.Init(); |
115 WantToDraw(); | 115 WantToDraw(); |
116 } | 116 } |
117 | 117 |
118 void GLES2ClientImpl::ContextLost() { | 118 void GLES2ClientImpl::ContextLost() { |
119 cube_.OnGLContextLost(); | 119 cube_.OnGLContextLost(); |
120 MojoGLES2DestroyContext(context_); | 120 MGLDestroyContext(context_); |
121 context_ = nullptr; | 121 context_ = nullptr; |
122 context_provider_->Create(nullptr, | 122 context_provider_->Create(nullptr, |
123 [this](mojo::CommandBufferPtr command_buffer) { | 123 [this](mojo::CommandBufferPtr command_buffer) { |
124 ContextCreated(command_buffer.Pass()); | 124 ContextCreated(command_buffer.Pass()); |
125 }); | 125 }); |
126 } | 126 } |
127 | 127 |
128 void GLES2ClientImpl::ContextLostThunk(void* closure) { | 128 void GLES2ClientImpl::ContextLostThunk(void* closure) { |
129 static_cast<GLES2ClientImpl*>(closure)->ContextLost(); | 129 static_cast<GLES2ClientImpl*>(closure)->ContextLost(); |
130 } | 130 } |
(...skipping 10 matching lines...) Expand all Loading... |
141 waiting_to_draw_ = false; | 141 waiting_to_draw_ = false; |
142 if (!context_) | 142 if (!context_) |
143 return; | 143 return; |
144 MojoTimeTicks now = mojo::GetTimeTicksNow(); | 144 MojoTimeTicks now = mojo::GetTimeTicksNow(); |
145 MojoTimeTicks offset = now - last_time_; | 145 MojoTimeTicks offset = now - last_time_; |
146 float delta = static_cast<float>(offset) / 1000000.; | 146 float delta = static_cast<float>(offset) / 1000000.; |
147 last_time_ = now; | 147 last_time_ = now; |
148 cube_.UpdateForTimeDelta(delta); | 148 cube_.UpdateForTimeDelta(delta); |
149 cube_.Draw(); | 149 cube_.Draw(); |
150 | 150 |
151 MojoGLES2SwapBuffers(); | 151 MGLSwapBuffers(); |
152 WantToDraw(); | 152 WantToDraw(); |
153 } | 153 } |
154 | 154 |
155 } // namespace examples | 155 } // namespace examples |
OLD | NEW |