diff options
Diffstat (limited to 'gpu/demos/app_framework/application.h')
-rw-r--r-- | gpu/demos/app_framework/application.h | 57 |
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_ |