1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2014 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker #ifndef SAMPLE_UTIL_SAMPLE_APPLICATION_H 8*8975f5c5SAndroid Build Coastguard Worker #define SAMPLE_UTIL_SAMPLE_APPLICATION_H 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #include <stdint.h> 11*8975f5c5SAndroid Build Coastguard Worker #include <list> 12*8975f5c5SAndroid Build Coastguard Worker #include <memory> 13*8975f5c5SAndroid Build Coastguard Worker #include <string> 14*8975f5c5SAndroid Build Coastguard Worker 15*8975f5c5SAndroid Build Coastguard Worker #include "common/system_utils.h" 16*8975f5c5SAndroid Build Coastguard Worker #include "util/EGLPlatformParameters.h" 17*8975f5c5SAndroid Build Coastguard Worker #include "util/OSWindow.h" 18*8975f5c5SAndroid Build Coastguard Worker #include "util/Timer.h" 19*8975f5c5SAndroid Build Coastguard Worker #include "util/egl_loader_autogen.h" 20*8975f5c5SAndroid Build Coastguard Worker 21*8975f5c5SAndroid Build Coastguard Worker class EGLWindow; 22*8975f5c5SAndroid Build Coastguard Worker class GLWindowBase; 23*8975f5c5SAndroid Build Coastguard Worker 24*8975f5c5SAndroid Build Coastguard Worker namespace angle 25*8975f5c5SAndroid Build Coastguard Worker { 26*8975f5c5SAndroid Build Coastguard Worker class Library; 27*8975f5c5SAndroid Build Coastguard Worker } // namespace angle 28*8975f5c5SAndroid Build Coastguard Worker 29*8975f5c5SAndroid Build Coastguard Worker bool IsGLExtensionEnabled(const std::string &extName); 30*8975f5c5SAndroid Build Coastguard Worker 31*8975f5c5SAndroid Build Coastguard Worker enum class ClientType 32*8975f5c5SAndroid Build Coastguard Worker { 33*8975f5c5SAndroid Build Coastguard Worker // Client types used by the samples. Add as needed. 34*8975f5c5SAndroid Build Coastguard Worker ES1, 35*8975f5c5SAndroid Build Coastguard Worker ES2, 36*8975f5c5SAndroid Build Coastguard Worker ES3_0, 37*8975f5c5SAndroid Build Coastguard Worker ES3_1, 38*8975f5c5SAndroid Build Coastguard Worker }; 39*8975f5c5SAndroid Build Coastguard Worker 40*8975f5c5SAndroid Build Coastguard Worker class SampleApplication 41*8975f5c5SAndroid Build Coastguard Worker { 42*8975f5c5SAndroid Build Coastguard Worker public: 43*8975f5c5SAndroid Build Coastguard Worker SampleApplication(std::string name, 44*8975f5c5SAndroid Build Coastguard Worker int argc, 45*8975f5c5SAndroid Build Coastguard Worker char **argv, 46*8975f5c5SAndroid Build Coastguard Worker ClientType clientType = ClientType::ES2, 47*8975f5c5SAndroid Build Coastguard Worker uint32_t width = 1280, 48*8975f5c5SAndroid Build Coastguard Worker uint32_t height = 720); 49*8975f5c5SAndroid Build Coastguard Worker virtual ~SampleApplication(); 50*8975f5c5SAndroid Build Coastguard Worker 51*8975f5c5SAndroid Build Coastguard Worker virtual bool initialize(); 52*8975f5c5SAndroid Build Coastguard Worker virtual void destroy(); 53*8975f5c5SAndroid Build Coastguard Worker 54*8975f5c5SAndroid Build Coastguard Worker virtual void step(float dt, double totalTime); 55*8975f5c5SAndroid Build Coastguard Worker virtual void draw(); 56*8975f5c5SAndroid Build Coastguard Worker 57*8975f5c5SAndroid Build Coastguard Worker virtual void swap(); 58*8975f5c5SAndroid Build Coastguard Worker 59*8975f5c5SAndroid Build Coastguard Worker virtual void onKeyUp(const Event::KeyEvent &keyEvent); 60*8975f5c5SAndroid Build Coastguard Worker virtual void onKeyDown(const Event::KeyEvent &keyEvent); 61*8975f5c5SAndroid Build Coastguard Worker 62*8975f5c5SAndroid Build Coastguard Worker OSWindow *getWindow() const; 63*8975f5c5SAndroid Build Coastguard Worker EGLConfig getConfig() const; 64*8975f5c5SAndroid Build Coastguard Worker EGLDisplay getDisplay() const; 65*8975f5c5SAndroid Build Coastguard Worker EGLSurface getSurface() const; 66*8975f5c5SAndroid Build Coastguard Worker EGLContext getContext() const; 67*8975f5c5SAndroid Build Coastguard Worker 68*8975f5c5SAndroid Build Coastguard Worker int run(); 69*8975f5c5SAndroid Build Coastguard Worker void exit(); 70*8975f5c5SAndroid Build Coastguard Worker 71*8975f5c5SAndroid Build Coastguard Worker private: 72*8975f5c5SAndroid Build Coastguard Worker bool popEvent(Event *event); 73*8975f5c5SAndroid Build Coastguard Worker 74*8975f5c5SAndroid Build Coastguard Worker std::string mName; 75*8975f5c5SAndroid Build Coastguard Worker uint32_t mWidth; 76*8975f5c5SAndroid Build Coastguard Worker uint32_t mHeight; 77*8975f5c5SAndroid Build Coastguard Worker bool mRunning; 78*8975f5c5SAndroid Build Coastguard Worker 79*8975f5c5SAndroid Build Coastguard Worker Timer mTimer; 80*8975f5c5SAndroid Build Coastguard Worker uint32_t mFrameCount; 81*8975f5c5SAndroid Build Coastguard Worker GLWindowBase *mGLWindow; 82*8975f5c5SAndroid Build Coastguard Worker EGLWindow *mEGLWindow; 83*8975f5c5SAndroid Build Coastguard Worker OSWindow *mOSWindow; 84*8975f5c5SAndroid Build Coastguard Worker angle::GLESDriverType mDriverType; 85*8975f5c5SAndroid Build Coastguard Worker 86*8975f5c5SAndroid Build Coastguard Worker EGLPlatformParameters mPlatformParams; 87*8975f5c5SAndroid Build Coastguard Worker 88*8975f5c5SAndroid Build Coastguard Worker // Handle to the entry point binding library. 89*8975f5c5SAndroid Build Coastguard Worker std::unique_ptr<angle::Library> mEntryPointsLib; 90*8975f5c5SAndroid Build Coastguard Worker }; 91*8975f5c5SAndroid Build Coastguard Worker 92*8975f5c5SAndroid Build Coastguard Worker #endif // SAMPLE_UTIL_SAMPLE_APPLICATION_H 93