NVidia Gameworks
  • Main Page
  • Classes
  • Files
  • File List
  • File Members

NvSampleApp.h

Go to the documentation of this file.
00001 // TAGRELEASE: PUBLIC
00002 
00003 // simple SDK app interface
00004 #ifndef NV_SAMPLE_APP_H
00005 #define NV_SAMPLE_APP_H
00006 
00007 #include <NvFoundation.h>
00008 
00009 #include "NvAppBase.h"
00010 #include "NvAppBase/NvStopWatch.h"
00011 #include "NvGLAppContext.h"
00012 #include "NvPlatformContext.h"
00013 #include "NvGamepad/NvGamepad.h"
00014 #include "NvUI/NvUI.h"
00015 #include "NvUI/NvTweakVar.h"
00016 #include <map>
00017 
00020 
00021 class NvFramerateCounter;
00022 class NvInputTransformer;
00023 class NvTweakBar;
00024 
00027 class NvSampleApp : public NvAppBase 
00028 {
00029 public:
00036     NvSampleApp(NvPlatformContext* platform, const char* appTitle=NULL);
00037 
00039     virtual ~NvSampleApp();
00040 
00044     virtual void initUI(void) { }
00045 
00048     virtual void drawUI(void) { }
00049 
00057     virtual void mainLoop();
00058 
00061     NvUIWindow *getUIWindow() { return mUIWindow; }
00062 
00068     NvFramerateCounter *getFramerate() { return mFramerate; }
00069 
00077     bool requireExtension(const char* ext, bool exitOnFailure = true);
00078 
00085     bool requireMinAPIVersion(const NvGfxAPIVersion& minApi, bool exitOnFailure = true);
00086 
00091     void errorExit(const char* errorString);
00092 
00095     float getFrameDeltaTime() { return mFrameDelta; }
00096 
00102     void addTweakKeyBind(NvTweakVarBase *var, uint32_t incKey, uint32_t decKey=0);
00103 
00109     void addTweakButtonBind(NvTweakVarBase *var, uint32_t incBtn, uint32_t decBtn=0);
00110 
00127     virtual bool getRequestedWindowSize(int32_t& width, int32_t& height);
00128 
00129     virtual NvUIEventResponse handleReaction(const NvUIReaction& react) { return nvuiEventNotHandled; }
00130 
00131 protected:
00134     bool isTestMode() { return mTestMode; }
00135 
00136     // Do not override these virtuals - overide the "handle" ones above
00137     bool pointerInput(NvInputDeviceType::Enum device, NvPointerActionType::Enum action, 
00138         uint32_t modifiers, int32_t count, NvPointerEvent* points); // we have base impl.
00139     bool keyInput(uint32_t code, NvKeyActionType::Enum action);
00140     bool characterInput(uint8_t c);
00141     bool gamepadChanged(uint32_t changedPadFlags);
00142     bool gamepadButtonChanged(uint32_t button, bool down);
00143 
00144     NvFramerateCounter *mFramerate;
00145     float mFrameDelta;
00146     NvStopWatch* mFrameTimer;
00147 
00148     NvUIWindow *mUIWindow;
00149     NvUIText *mFPSText;
00150     NvTweakBar *mTweakBar;
00151     NvUIButton *mTweakTab;
00152 
00153     NvInputTransformer* m_transformer;
00154 
00155     typedef std::map<uint32_t, NvTweakBind> NvAppKeyBind;
00156     NvAppKeyBind mKeyBinds;
00157     typedef std::map<uint32_t, NvTweakBind> NvAppButtonBind;
00158     NvAppButtonBind mButtonBinds;
00159 
00160     NvGamepad::State mLastPadState[NvGamepad::MAX_GAMEPADS];
00161 
00163     void baseInitRendering(void);
00164     void baseShutdownRendering(void);
00165     void baseInitUI(void);
00166     void baseReshape(int32_t w, int32_t h);
00167     void baseUpdate(void);
00168     void baseDraw(void);
00169     void baseDrawUI(void);
00170     void baseFocusChanged(bool focused);
00171     void baseHandleReaction(void);
00172     void logTestResults(float frameRate, int32_t frames);
00173 
00174 private:
00175     int32_t m_desiredWidth;
00176     int32_t m_desiredHeight;
00177     bool mTestMode;
00178     float mTestDuration;
00179     int32_t mTestRepeatFrames;
00180     std::string mTestName;
00181 
00182     const static int32_t TESTMODE_WARMUP_FRAMES = 10;
00183 };
00184 
00185 #endif
Generated on Sat Mar 8 14:58:35 2014 for NVIDIA GameWorks OpenGL App Framework and Libraries by Doxygen
©2014 NVIDIA Corporation.