//-------------------------------------------------------------- // Name: WinMain - global // Description: The equivalant to Main( ) in console apps // Arguments: Just some default arguments that windows requires // Return Value: An integer variable //-------------------------------------------------------------- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { char szBuffer[256]; //Do all of the Initiation stuff if( !DemoInit( ) ) return false; while( true ) { if( !g_glApp.HandleMessages( ) ) break; if( g_glApp.MenuDown( ID_DEMO_EXIT ) ) PostQuitMessage( 0 ); //save the current height map else if( g_glApp.MenuDown( ID_DEMO_SAVEMAP ) ) { sprintf( szBuffer, "height%d_%d.RAW", g_bruteForce.m_iSize, g_iCurrentHeightmap ); g_bruteForce.SaveHeightMap( szBuffer ); g_iCurrentHeightmap++; } //generate a new height map using fault formation else if( g_glApp.MenuDown( ID_DEMO_FF ) ) { g_iFractalAlgo= FAULT_FORMATION; g_glApp.CreateDialogBox( IDD_ROUGHNESS, IDD_ROUGHNESSProc ); } //generate a new height map using midpoint displacement else if( g_glApp.MenuDown( ID_DEMO_MD ) ) { g_iFractalAlgo= MIDPOINT_DISPLACEMENT; g_glApp.CreateDialogBox( IDD_ROUGHNESS, IDD_ROUGHNESSProc ); } if( g_glApp.IsActive( )==APP_ACTIVE ) { //check input if( !DemoInput( ) ) break; //rendering loop DemoRender( ); } } //Shut the game down DemoShutdown( ); return false; }
void DrawFrame(void* user_data, int32_t result) { glSetCurrentContextPPAPI(psNaCLContext->hRenderContext); DemoRender(psNaCLContext); glSetCurrentContextPPAPI(0); PP_CompletionCallback cc = PP_MakeCompletionCallback(DrawFrame, 0); psNaCLContext->psG3D->SwapBuffers(psNaCLContext->hRenderContext, cc); }
//-------------------------------------------------------------- // Name: WinMain - global // Description: The equivalant to Main( ) in console apps // Arguments: Just some default arguments that windows requires // Return Value: An integer variable //-------------------------------------------------------------- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { //Do all of the Initiation stuff if( !DemoInit( ) ) return false; while( true ) { if( !g_glApp.HandleMessages( ) ) break; //exit the demo if( g_glApp.MenuDown( ID_DEMO_EXIT ) ) PostQuitMessage( 0 ); //take a screenshot else if( g_glApp.MenuDown( ID_DEMO_SCREENSHOT ) ) g_glApp.TakeScreenshot( "screenshot.bmp" ); if( g_glApp.IsActive( )==APP_ACTIVE ) { //check input if( !DemoInput( ) ) break; //rendering loop DemoRender( ); } } //Shut the game down DemoShutdown( ); return false; }
//-------------------------------------------------------------- // Name: WinMain - global // Description: The equivalant to Main( ) in console apps // Arguments: Just some default arguments that windows requires // Return Value: An integer variable //-------------------------------------------------------------- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { char szBuffer[256]; //Do all of the Initiation stuff if( !DemoInit( ) ) return false; while( true ) { if( !g_glApp.HandleMessages( ) ) break; //exit the demo if( g_glApp.MenuDown( ID_DEMO_EXIT ) ) PostQuitMessage( 0 ); //take a screenshot else if( g_glApp.MenuDown( ID_DEMO_SCREENSHOT ) ) g_glApp.TakeScreenshot( "screenshot.bmp" ); //save the current height map else if( g_glApp.MenuDown( ID_DEMO_SAVEMAP ) ) { sprintf( szBuffer, "height%d_%d.RAW", g_bruteForce.m_iSize, g_iCurrentHeightmap ); g_bruteForce.SaveHeightMap( szBuffer ); g_iCurrentHeightmap++; } //save the current texture map else if( g_glApp.MenuDown( ID_DEMO_SAVE_TEXTUREMAP ) ) g_bruteForce.SaveTextureMap( "texturemap.bmp" ); //generate a texture map (with the size provided) else if( g_glApp.MenuDown( ID_DEMO_GENERATE_TEXTURE_MAP ) ) g_glApp.CreateDialogBox( IDD_TEXTURESIZE, IDD_TEXTUREProc ); //generate a new height map using fault formation else if( g_glApp.MenuDown( ID_DEMO_FF ) ) { g_iFractalAlgo= FAULT_FORMATION; g_glApp.CreateDialogBox( IDD_ROUGHNESS, IDD_ROUGHNESSProc ); } //generate a new height map using midpoint displacement else if( g_glApp.MenuDown( ID_DEMO_MD ) ) { g_iFractalAlgo= MIDPOINT_DISPLACEMENT; g_glApp.CreateDialogBox( IDD_ROUGHNESS, IDD_ROUGHNESSProc ); } //save the current light map to a file else if( g_glApp.MenuDown( ID_DEMO_SAVELIGHTMAP ) ) g_bruteForce.SaveLightMap( "lightmap.raw" ); //customize slope lighting parameters using a dialog box else if( g_glApp.MenuDown( ID_DEMO_CUSTOMIZE_SLOPE ) ) g_glApp.CreateDialogBox( IDD_CUSTOMIZE_SLOPE, IDD_CUSTOMIZE_SLOPEProc ); if( g_glApp.IsActive( )==APP_ACTIVE ) { //check input if( !DemoInput( ) ) break; //rendering loop DemoRender( ); } } //Shut the game down DemoShutdown( ); return false; }
int main(int argc, char *argv[]) #endif { UNUSED(argc); UNUSED(argv); TUpdate lUpdate = {0,}; TConfig lConfig = { 800 /* width */, 600 /* height */, 16 /* bpp */, false /* fullscreen */, "LDPrototype", /* title */ 16, /* Hz */ 1, /* VSync */ 0, /* Multisampling (0 == disabled) */ false, /* Grab Input */ false, /* Hide Cursor */ false, /* Center Cursor */ false /* Audio */ }; DemoConfig(&lConfig); if(SDL_Init(SDL_INIT_EVERYTHING)<0) { printf("SDL_init: %s\n", SDL_GetError()); return -1; } /*! Initialize random seed */ srand(time(NULL)); if(lConfig.mAudio) { if(Mix_OpenAudio( 44100, MIX_DEFAULT_FORMAT, 2, 1024) < 0) { printf("Mix_OpenAudio: %s\n", Mix_GetError()); return -2; } } /* Input */ uint32 lCenterX = lConfig.mWidth / 2; uint32 lCenterY = lConfig.mHeight/ 2; if(lConfig.mGrabInput) SDL_WM_GrabInput(SDL_GRAB_ON); if(lConfig.mHideCursor) SDL_ShowCursor(SDL_DISABLE); SDL_EnableKeyRepeat( SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL ); /* OpenGL */ SDL_GL_SetAttribute( SDL_GL_SWAP_CONTROL, lConfig.mVSync ); if(lConfig.mMultiSampling) { SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, lConfig.mMultiSampling); } /* Window */ uint32 lFlags = SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_OPENGL; if(lConfig.mFullScreen) lFlags |= SDL_FULLSCREEN; SDL_Surface *lScreen = SDL_SetVideoMode(lConfig.mWidth, lConfig.mHeight, lConfig.mBpp, lFlags); if(lScreen == NULL) { printf("SDL_SetVideoMode: %s\n", SDL_GetError()); return -3; } if(lConfig.mTitle!=NULL) SDL_WM_SetCaption(lConfig.mTitle, lConfig.mTitle); /* OpenGL Again */ uint32 lError = 0; if((lError=glewInit()) != GLEW_OK) { printf("glewInit: %s\n", glewGetErrorString(lError)); goto exit; } if(!GLEW_VERSION_2_0) { printf("OpenGL 2.0 is not available.\n"); goto exit; } { int lTexImageUnits = 0; int lTexUnits = 0; glGetIntegerv(GL_MAX_TEXTURE_UNITS,&lTexUnits); glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS,&lTexImageUnits); printf("%d Texture and %d Image Units ...\n",lTexUnits, lTexImageUnits); if(lTexUnits<4) { printf(" => WARNING: You don't seem to have at least 4 Texture Units ...\n"); goto exit; } } if(!GLEW_EXT_framebuffer_object) { printf(" => WARNING: GL_EXT_framebuffer_object is not supported ...\n"); goto exit; } if(!GLEW_EXT_framebuffer_multisample) { printf(" => WARNING: GL_EXT_framebuffer_multisample is not supported ...\n"); goto exit; } if(!GLEW_EXT_framebuffer_blit) { printf(" => WARNING: GL_EXT_framebuffer_blit is not supported ...\n"); goto exit; } printf("Non Power Of Two Textures: %s\n", (GLEW_ARB_texture_non_power_of_two)?"yes":"no"); /* Init the demo */ if(!DemoInit(&lConfig)) goto demo_exit; lUpdate.mStartTime = SDL_GetTicks(); /* Event Loop */ while(1) { SDL_Event lEvent; while (SDL_PollEvent(&lEvent)) { switch(lEvent.type) { case SDL_QUIT: { lUpdate.mKeys[SDLK_ESCAPE] = true; } break; case SDL_KEYDOWN: { lUpdate.mKeys[lEvent.key.keysym.sym] = true; } break; case SDL_KEYUP: { lUpdate.mKeys[lEvent.key.keysym.sym] = false; } break; case SDL_MOUSEMOTION: { lUpdate.mMouseX = lEvent.motion.x; lUpdate.mMouseY = lEvent.motion.y; lUpdate.mMouseDeltaX = lEvent.motion.xrel; lUpdate.mMouseDeltaY = lEvent.motion.yrel; } break; } } if(lUpdate.mKeys[SDLK_ESCAPE]) { lUpdate.mKeys[SDLK_ESCAPE] = false; goto demo_exit; } if(lConfig.mCenterCursor) SDL_WarpMouse( lCenterX, lCenterY ); if(!DemoUpdate(&lConfig, &lUpdate)) break; DemoRender(&lConfig, &lUpdate); lUpdate.mLastTime = lUpdate.mTime; lUpdate.mTime = SDL_GetTicks(); lUpdate.mElapsedTime = lUpdate.mTime - lUpdate.mStartTime; lUpdate.mDeltaTime = (lUpdate.mTime - lUpdate.mLastTime); if(lUpdate.mDeltaTime < lConfig.mHz) SDL_Delay( lConfig.mHz - lUpdate.mDeltaTime ); } demo_exit: DemoShutdown(); exit: if(lConfig.mAudio) { Mix_CloseAudio(); } SDL_Quit(); printf("Sayonara ...\n"); return 0; }