Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: gpu/demos/framework/pepper.cc

Issue 6047008: Added ppapi::Surface3D. This CL completes the new Pepper3D interface. The imp... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <GLES2/gl2.h> 5 #include <GLES2/gl2.h>
6 6
7 #include "gpu/demos/framework/demo.h" 7 #include "gpu/demos/framework/demo.h"
8 #include "gpu/demos/framework/demo_factory.h" 8 #include "gpu/demos/framework/demo_factory.h"
9 #include "ppapi/cpp/completion_callback.h" 9 #include "ppapi/cpp/completion_callback.h"
10 #include "ppapi/cpp/instance.h" 10 #include "ppapi/cpp/instance.h"
11 #include "ppapi/cpp/module.h" 11 #include "ppapi/cpp/module.h"
12 #include "ppapi/cpp/rect.h" 12 #include "ppapi/cpp/rect.h"
13 #include "ppapi/cpp/size.h" 13 #include "ppapi/cpp/size.h"
14 #include "ppapi/cpp/dev/context_3d_dev.h" 14 #include "ppapi/cpp/dev/context_3d_dev.h"
15 #include "ppapi/cpp/dev/graphics_3d_dev.h" 15 #include "ppapi/cpp/dev/graphics_3d_dev.h"
16 #include "ppapi/cpp/dev/surface_3d_dev.h"
16 #include "ppapi/lib/gl/gles2/gl2ext_ppapi.h" 17 #include "ppapi/lib/gl/gles2/gl2ext_ppapi.h"
17 18
18 namespace gpu { 19 namespace gpu {
19 namespace demos { 20 namespace demos {
20 21
21 class PluginInstance : public pp::Instance { 22 class PluginInstance : public pp::Instance {
22 public: 23 public:
23 PluginInstance(PP_Instance instance, pp::Module* module) 24 PluginInstance(PP_Instance instance, pp::Module* module)
24 : pp::Instance(instance), 25 : pp::Instance(instance),
25 module_(module), 26 module_(module),
(...skipping 17 matching lines...) Expand all
43 return; 44 return;
44 45
45 size_ = position.size(); 46 size_ = position.size();
46 demo_->InitWindowSize(size_.width(), size_.height()); 47 demo_->InitWindowSize(size_.width(), size_.height());
47 48
48 if (context_.is_null()) { 49 if (context_.is_null()) {
49 context_ = pp::Context3D_Dev(*this, 0, pp::Context3D_Dev(), NULL); 50 context_ = pp::Context3D_Dev(*this, 0, pp::Context3D_Dev(), NULL);
50 if (context_.is_null()) 51 if (context_.is_null())
51 return; 52 return;
52 53
53 if (!pp::Instance::BindGraphics(context_))
54 return;
55
56 glSetCurrentContextPPAPI(context_.pp_resource()); 54 glSetCurrentContextPPAPI(context_.pp_resource());
57 demo_->InitGL(); 55 demo_->InitGL();
58 glSetCurrentContextPPAPI(0); 56 glSetCurrentContextPPAPI(0);
57 } else {
58 // Need to recreate surface. Unbind existing surface.
59 pp::Instance::BindGraphics(pp::Surface3D_Dev());
60 context_.BindSurfaces(pp::Surface3D_Dev(), pp::Surface3D_Dev());
59 } 61 }
62 surface_ = pp::Surface3D_Dev(*this, 0, NULL);
63 context_.BindSurfaces(surface_, surface_);
64 pp::Instance::BindGraphics(surface_);
60 65
61 if (demo_->IsAnimated()) 66 if (demo_->IsAnimated())
62 Animate(0); 67 Animate(0);
63 else 68 else
64 Paint(); 69 Paint();
65 } 70 }
66 71
67 void Paint() { 72 void Paint() {
68 glSetCurrentContextPPAPI(context_.pp_resource()); 73 glSetCurrentContextPPAPI(context_.pp_resource());
69 demo_->Draw(); 74 demo_->Draw();
70 context_.SwapBuffers(); 75 surface_.SwapBuffers();
71 glSetCurrentContextPPAPI(0); 76 glSetCurrentContextPPAPI(0);
72 } 77 }
73 78
74 private: 79 private:
75 void Animate(int delay) { 80 void Animate(int delay) {
76 Paint(); 81 Paint();
77 module_->core()->CallOnMainThread(delay, 82 module_->core()->CallOnMainThread(delay,
78 callback_factory_.NewCallback(&PluginInstance::Animate), delay); 83 callback_factory_.NewCallback(&PluginInstance::Animate), delay);
79 } 84 }
80 85
81 pp::Module* module_; 86 pp::Module* module_;
82 Demo* demo_; 87 Demo* demo_;
83 pp::Context3D_Dev context_; 88 pp::Context3D_Dev context_;
89 pp::Surface3D_Dev surface_;
84 pp::Size size_; 90 pp::Size size_;
85 pp::CompletionCallbackFactory<PluginInstance> callback_factory_; 91 pp::CompletionCallbackFactory<PluginInstance> callback_factory_;
86 }; 92 };
87 93
88 class PluginModule : public pp::Module { 94 class PluginModule : public pp::Module {
89 public: 95 public:
90 PluginModule() {} 96 PluginModule() {}
91 ~PluginModule() { 97 ~PluginModule() {
92 glTerminatePPAPI(); 98 glTerminatePPAPI();
93 } 99 }
(...skipping 11 matching lines...) Expand all
105 } // namespace gpu 111 } // namespace gpu
106 112
107 namespace pp { 113 namespace pp {
108 114
109 Module* CreateModule() { 115 Module* CreateModule() {
110 return new gpu::demos::PluginModule(); 116 return new gpu::demos::PluginModule();
111 } 117 }
112 118
113 } // namespace pp 119 } // namespace pp
114 120
OLDNEW
« no previous file with comments | « no previous file | ppapi/c/dev/ppb_context_3d_dev.h » ('j') | webkit/plugins/ppapi/ppapi_plugin_instance.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698