summaryrefslogtreecommitdiffstats
path: root/gpu/demos/app_framework/application.h
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/demos/app_framework/application.h')
-rw-r--r--gpu/demos/app_framework/application.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/gpu/demos/app_framework/application.h b/gpu/demos/app_framework/application.h
new file mode 100644
index 0000000..9851c49
--- /dev/null
+++ b/gpu/demos/app_framework/application.h
@@ -0,0 +1,57 @@
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Base class for gles2 applications using command buffer.
+
+#ifndef GPU_DEMOS_APP_FRAMEWORK_APPLICATION_H_
+#define GPU_DEMOS_APP_FRAMEWORK_APPLICATION_H_
+
+#include "base/at_exit.h"
+#include "base/message_loop.h"
+
+#include "gpu/demos/app_framework/platform.h"
+
+namespace gpu_demos {
+
+// Acts as a base class for GLES2 applications using command buffer.
+// The derived calls needs to call InitRenderContext() to create a render
+// surface and initialize a rendering context. Currently it only creates
+// an on-screen window. It will be extended to support pepper/nacl plugin
+// when pepper 3D api is in place.
+class Application {
+ public:
+ Application();
+ virtual ~Application();
+
+ // Enters the event processing loop.
+ void MainLoop();
+ void OnPaint();
+
+ protected:
+ // Returns the size of rendering surface.
+ inline int width() const { return width_; }
+ inline int height() const { return height_; }
+
+ bool InitRenderContext();
+
+ virtual void Draw() = 0;
+
+ private:
+ // Creates a native on-screen window.
+ NativeWindowHandle CreateNativeWindow();
+
+ int width_;
+ int height_;
+ NativeWindowHandle window_handle_;
+
+ // The following two variables are just needed to satisfy
+ // the assumption that we are running inside a browser.
+ base::AtExitManager at_exit_manager_;
+ MessageLoopForUI message_loop_;
+
+ DISALLOW_COPY_AND_ASSIGN(Application);
+};
+
+} // namespace gpu_demos
+#endif // GPU_DEMOS_APP_FRAMEWORK_APPLICATION_H_