// // Program starts here // int main() { // // Note: Order is important here. you need to create the WindowCanvas before // you setup the skin - because the renderer won't be properly set up // if you try to do it before (The window canvas initializes the renderer) // // Create the skin and renderer // //gwen::Renderer::GDIPlusBuffered renderer; //gwen::Renderer::Direct2D renderer; //gwen::Renderer::DirectX9 renderer; gwen::Renderer::OpenGL_DebugFont renderer; gwen::Skin::TexturedBase skin( &renderer ); // // The window canvas is a cross between a window and a canvas // It's cool because it takes care of creating an OS specific // window - so we don't have to bother with all that crap. // // gwen::Controls::WindowCanvas window_canvas( -1, -1, 700, 500, &skin, "gwen's Cross Platform Example" ); // // Now it's safe to set up the skin // skin.Init( "DefaultSkin.png" ); // // Create our unittest control // UnitTest* pUnit = new UnitTest( &window_canvas ); pUnit->SetPos( 10, 10 ); while ( !window_canvas.WantsQuit() ) { window_canvas.DoThink(); } // Everything should be automatically released // pUnit is a child of Canvas - which releases all of its children }
int main() { // // Create a new window // g_pHWND = CreateGameWindow(); // // Create a GWEN GDI+ Renderer // Note: we're using the buffered version. // This version draws to a texture and then draws that texture to the window // This prevents all the crazy flickering (test with Gwen::Renderer::GDIPlus to see) // Gwen::Renderer::GDIPlusBuffered* pRenderer = new Gwen::Renderer::GDIPlusBuffered( g_pHWND ); // // Create a GWEN skin // //Gwen::Skin::Simple skin; Gwen::Skin::TexturedBase* skin = new Gwen::Skin::TexturedBase( pRenderer ); skin->Init( "DefaultSkin.png" ); // // Create a Canvas (it's root, on which all other GWEN panels are created) // Gwen::Controls::Canvas* pCanvas = new Gwen::Controls::Canvas( skin ); pCanvas->SetSize( 998, 650 - 24 ); pCanvas->SetDrawBackground( true ); pCanvas->SetBackgroundColor( Gwen::Color( 150, 170, 170, 255 ) ); // // Create our unittest control (which is a Window with controls in it) // UnitTest* pUnit = new UnitTest( pCanvas ); pUnit->SetPos( 10, 10 ); // // Create a Windows Control helper // (Processes Windows MSG's and fires input at GWEN) // Gwen::Input::Windows GwenInput; GwenInput.Initialize( pCanvas ); // // Begin the main game loop // MSG msg; while( true ) { // Skip out if the window is closed if ( !IsWindowVisible( g_pHWND ) ) break; // If we have a message from windows.. if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { // .. give it to the input handler to process GwenInput.ProcessMessage( msg ); // if it's QUIT then quit.. if ( msg.message == WM_QUIT ) break; if ( msg.message == WM_PAINT ) { // This doesn't actually draw it, it just marks it // so it will redraw when next checked (NeedsRedraw) pCanvas->Redraw(); } // Handle the regular window stuff.. TranslateMessage(&msg); DispatchMessage(&msg); } // If GWEN's Canvas needs a redraw then redraw it // // In your game you would probably just draw it // every frame. But we have the option of only // drawing it when it needs it too. // if ( pCanvas->NeedsRedraw() ) { pCanvas->RenderCanvas(); } } delete pCanvas; delete skin; delete pRenderer; }
// // Program starts here // int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // // Create a window and attach directx to it // g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ); g_pHWND = CreateGameWindow(); CreateD3DDevice(); // // Create a GWEN DirectX renderer // Gwen::Renderer::DirectX9* pRenderer = new Gwen::Renderer::DirectX9( g_pD3DDevice ); // // Create a GWEN skin // Gwen::Skin::TexturedBase skin; skin.SetRender( pRenderer ); skin.Init( "DefaultSkin.png" ); // // Create a Canvas (it's root, on which all other GWEN panels are created) // Gwen::Controls::Canvas* pCanvas = new Gwen::Controls::Canvas( &skin ); pCanvas->SetSize( 1000, 622 ); pCanvas->SetDrawBackground( true ); pCanvas->SetBackgroundColor( Gwen::Color( 150, 170, 170, 255 ) ); // // Create our unittest control (which is a Window with controls in it) // UnitTest* pUnit = new UnitTest( pCanvas ); pUnit->SetPos( 10, 10 ); // // Create a Windows Control helper // (Processes Windows MSG's and fires input at GWEN) // Gwen::Input::Windows GwenInput; GwenInput.Initialize( pCanvas ); // // Begin the main game loop // MSG msg; while( true ) { // Skip out if the window is closed if ( !IsWindowVisible( g_pHWND ) ) break; // If we have a message from windows.. if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { // .. give it to the input handler to process GwenInput.ProcessMessage( msg ); // if it's QUIT then quit.. if ( msg.message == WM_QUIT ) break; // Handle the regular window stuff.. TranslateMessage(&msg); DispatchMessage(&msg); } else { // Normal DirectX rendering loop g_pD3DDevice->BeginScene(); g_pD3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 0, 0, 0 ), 1, 0 ); // This is how easy it is to render GWEN! pCanvas->RenderCanvas(); g_pD3DDevice->EndScene(); g_pD3DDevice->Present( NULL, NULL, NULL, NULL ); } } if ( g_pD3DDevice ) { g_pD3DDevice->Release(); g_pD3DDevice = NULL; } if ( g_pD3D ) { g_pD3D->Release(); g_pD3D = NULL; } }
int main() { b3gDefaultOpenGLWindow* window = new b3gDefaultOpenGLWindow(); window->setKeyboardCallback(keyCallback); b3gWindowConstructionInfo wci; wci.m_openglVersion = 2; wci.m_width = sWidth; wci.m_height = sHeight; // wci.m_resizeCallback = MyResizeCallback; window->createWindow(wci); window->setResizeCallback(MyResizeCallback); int majorGlVersion, minorGlVersion; if (!sscanf((const char*)glGetString(GL_VERSION), "%d.%d", &majorGlVersion, &minorGlVersion)==2) { printf("Exit: Error cannot extract OpenGL version from GL_VERSION string\n"); exit(0); } char title[1024]; if (wci.m_openglVersion>2) { sprintf(title,"Gwen with OpenGL %d.%d\n",majorGlVersion,minorGlVersion); } else { sprintf(title,"Gwen with OpenGL %d\n",wci.m_openglVersion); } window->setWindowTitle(title); if (majorGlVersion>=3 && wci.m_openglVersion>=3) { float retinaScale = 1.f; #ifndef __APPLE__ #ifndef _WIN32 //we need glewExperimental on Linux glewExperimental = GL_TRUE; #endif // _WIN32 glewInit(); #endif //we ned to call glGetError twice, because of some Ubuntu/Intel/OpenGL issue GLuint err = glGetError(); err = glGetError(); assert(err==GL_NO_ERROR); retinaScale = window->getRetinaScale(); primRenderer = new GLPrimitiveRenderer(sWidth,sHeight); sth_stash* font = initFont(primRenderer ); gwenRenderer = new GwenOpenGL3CoreRenderer(primRenderer,font,sWidth,sHeight,retinaScale); } else { //OpenGL 2.x gwenRenderer = new Gwen::Renderer::OpenGL_DebugFont(); skin.SetRender( gwenRenderer ); glClearColor(1,0,0,1); } // // Create a GWEN OpenGL Renderer // // Gwen::Renderer::OpenGL_DebugFont * pRenderer = new Gwen::Renderer::OpenGL_DebugFont(); // // Create a GWEN skin // #ifdef USE_TEXTURED_SKIN Gwen::Skin::TexturedBase skin; skin.SetRender( pRenderer ); skin.Init("DefaultSkin.png"); #else skin.SetRender( gwenRenderer ); #endif // // Create a Canvas (it's root, on which all other GWEN panels are created) // pCanvas = new Gwen::Controls::Canvas( &skin ); pCanvas->SetSize( sWidth, sHeight); pCanvas->SetDrawBackground( true ); pCanvas->SetBackgroundColor( Gwen::Color( 150, 170, 170, 255 ) ); window->setMouseButtonCallback(MyMouseButtonCallback); window->setMouseMoveCallback(MyMouseMoveCallback); // // Create our unittest control (which is a Window with controls in it) // UnitTest* pUnit = new UnitTest( pCanvas ); pUnit->SetPos( 10, 10 ); // // Create a Windows Control helper // (Processes Windows MSG's and fires input at GWEN) // //Gwen::Input::Windows GwenInput; //GwenInput.Initialize( pCanvas ); // // Begin the main game loop // // MSG msg; while( !window->requestedExit() ) { if (majorGlVersion<3 || wci.m_openglVersion<3) { saveOpenGLState(sWidth,sHeight); } // Skip out if the window is closed //if ( !IsWindowVisible( g_pHWND ) ) //break; // If we have a message from windows.. // if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { // .. give it to the input handler to process // GwenInput.ProcessMessage( msg ); // if it's QUIT then quit.. // if ( msg.message == WM_QUIT ) // break; // Handle the regular window stuff.. // TranslateMessage(&msg); // DispatchMessage(&msg); } window->startRendering(); // Main OpenGL Render Loop { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glEnable(GL_BLEND); GLint err = glGetError(); assert(err==GL_NO_ERROR); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); err = glGetError(); assert(err==GL_NO_ERROR); err = glGetError(); assert(err==GL_NO_ERROR); glDisable(GL_DEPTH_TEST); err = glGetError(); assert(err==GL_NO_ERROR); //glColor4ub(255,0,0,255); err = glGetError(); assert(err==GL_NO_ERROR); err = glGetError(); assert(err==GL_NO_ERROR); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); // saveOpenGLState(width,height);//m_glutScreenWidth,m_glutScreenHeight); err = glGetError(); assert(err==GL_NO_ERROR); err = glGetError(); assert(err==GL_NO_ERROR); glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); err = glGetError(); assert(err==GL_NO_ERROR); err = glGetError(); assert(err==GL_NO_ERROR); glEnable(GL_BLEND); err = glGetError(); assert(err==GL_NO_ERROR); pCanvas->RenderCanvas(); if (avoidUpdate<=0) avoidUpdate++; // SwapBuffers( GetDC( g_pHWND ) ); } window->endRendering(); if (majorGlVersion<3 || wci.m_openglVersion<3) { restoreOpenGLState(); } } window->closeWindow(); delete window; }
int main() { // // Create a new window // g_pHWND = CreateGameWindow(); // // Create OpenGL Device // HGLRC OpenGLContext = CreateOpenGLDeviceContext(); // // Create a GWEN OpenGL Renderer // #ifdef USE_DEBUG_FONT gwen::Renderer::OpenGL* pRenderer = new gwen::Renderer::OpenGL_DebugFont(); #else gwen::Renderer::OpenGL* pRenderer = new gwen::Renderer::OpenGL(); #endif pRenderer->Init(); // // Create a GWEN skin // gwen::Skin::TexturedBase* pSkin = new gwen::Skin::TexturedBase( pRenderer ); pSkin->Init( "DefaultSkin.png" ); // // Create a Canvas (it's root, on which all other GWEN panels are created) // gwen::Controls::Canvas* pCanvas = new gwen::Controls::Canvas( pSkin ); pCanvas->SetSize( 998, 650 - 24 ); pCanvas->SetDrawBackground( true ); pCanvas->SetBackgroundColor( gwen::Color( 150, 170, 170, 255 ) ); // // Create our unittest control (which is a Window with controls in it) // UnitTest* pUnit = new UnitTest( pCanvas ); pUnit->SetPos( 10, 10 ); // // Create a Windows Control helper // (Processes Windows MSG's and fires input at GWEN) // gwen::Input::Windows gwenInput; gwenInput.Initialize( pCanvas ); // // Begin the main game loop // MSG msg; while ( true ) { // Skip out if the window is closed if ( !IsWindowVisible( g_pHWND ) ) { break; } // If we have a message from windows.. if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { // .. give it to the input handler to process gwenInput.ProcessMessage( msg ); // if it's QUIT then quit.. if ( msg.message == WM_QUIT ) { break; } // Handle the regular window stuff.. TranslateMessage( &msg ); DispatchMessage( &msg ); } // Main OpenGL Render Loop { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); pCanvas->RenderCanvas(); SwapBuffers( GetDC( g_pHWND ) ); } } // Clean up OpenGL wglMakeCurrent( NULL, NULL ); wglDeleteContext( OpenGLContext ); delete pCanvas; delete pSkin; delete pRenderer; }
void runSample() { RECT FrameBounds; GetClientRect( g_pHWND, &FrameBounds ); // // Create a GWEN skin // gwen::Skin::TexturedBase skin( g_pRenderer ); skin.Init( "DefaultSkin.png" ); // // Create a Canvas (it's root, on which all other GWEN panels are created) // gwen::Controls::Canvas* pCanvas = new gwen::Controls::Canvas( &skin ); pCanvas->SetSize( FrameBounds.right, FrameBounds.bottom ); pCanvas->SetDrawBackground( true ); pCanvas->SetBackgroundColor( gwen::Color( 150, 170, 170, 255 ) ); // // Create our unittest control (which is a Window with controls in it) // UnitTest* pUnit = new UnitTest( pCanvas ); pUnit->SetPos( 10, 10 ); // // Create a Windows Control helper // (Processes Windows MSG's and fires input at GWEN) // gwen::Input::Windows gwenInput; gwenInput.Initialize( pCanvas ); // // Begin the main game loop // MSG msg; while ( true ) { // Skip out if the window is closed if ( !IsWindowVisible( g_pHWND ) ) { break; } // If we have a message from windows.. if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { // .. give it to the input handler to process gwenInput.ProcessMessage( msg ); // if it's QUIT then quit.. if ( msg.message == WM_QUIT ) { break; } // Handle the regular window stuff.. TranslateMessage( &msg ); DispatchMessage( &msg ); } { if ( SUCCEEDED( createDeviceResources() ) ) { g_pRT->BeginDraw(); g_pRT->SetTransform( D2D1::Matrix3x2F::Identity() ); g_pRT->Clear( D2D1::ColorF( D2D1::ColorF::White ) ); // This is how easy it is to render GWEN! pCanvas->RenderCanvas(); HRESULT hr = g_pRT->EndDraw(); if ( hr == D2DERR_RECREATE_TARGET ) { discardDeviceResources(); g_pRenderer->DeviceLost(); } } } } delete pCanvas; }
//////////////////////////////////////////////////////////// /// Entry point of application /// /// \return Application exit code /// //////////////////////////////////////////////////////////// int main() { // Create the window of the application sf::RenderWindow App( sf::VideoMode( 800, 600, 32 ), "GWEN: SFML" ); Gwen::Renderer::SFML GwenRenderer( App ); // // Create a GWEN skin // //Gwen::Skin::Simple skin; //skin.SetRender( &GwenRenderer ); Gwen::Skin::TexturedBase skin; skin.SetRender( &GwenRenderer ); skin.Init( "DefaultSkin.png" ); // The fonts work differently in SFML - it can't use // system fonts. So force the skin to use a local one. skin.SetDefaultFont( L"OpenSans.ttf", 11 ); // // Create a Canvas (it's root, on which all other GWEN panels are created) // Gwen::Controls::Canvas* pCanvas = new Gwen::Controls::Canvas( &skin ); pCanvas->SetSize( 800, 600 ); pCanvas->SetDrawBackground( true ); pCanvas->SetBackgroundColor( Gwen::Color( 150, 170, 170, 255 ) ); // // Create our unittest control (which is a Window with controls in it) // UnitTest* pUnit = new UnitTest( pCanvas ); pUnit->SetPos( 10, 10 ); // // Create an input processor // Gwen::Input::SFML GwenInput; GwenInput.Initialize( pCanvas ); while ( App.IsOpened() ) { // Handle events sf::Event Event; #if SFML_VERSION_MAJOR == 2 while ( App.PollEvent(Event) ) #else while ( App.GetEvent(Event) ) #endif { // Window closed or escape key pressed : exit #if SFML_VERSION_MAJOR == 2 if ((Event.Type == sf::Event::Closed) || ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Keyboard::Escape))) #else if ((Event.Type == sf::Event::Closed) || ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))) #endif { App.Close(); break; } GwenInput.ProcessMessage( Event ); } // Clear the window App.Clear(); pCanvas->RenderCanvas(); App.Display(); } return EXIT_SUCCESS; }
// // Program starts here // int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // // Create a window and attach directx to it // g_pHWND = CreateGameWindow(); CreateD3DDevice(); RECT FrameBounds; GetClientRect(g_pHWND, &FrameBounds); // // Create a GWEN DirectX renderer // Gwen::Renderer::DirectX10* pRenderer = new Gwen::Renderer::DirectX10(g_pd3dDevice); // // Create a GWEN skin // Gwen::Skin::TexturedBase* pSkin = new Gwen::Skin::TexturedBase(pRenderer); pSkin->Init("DefaultSkin.png"); // // Create a Canvas (it's root, on which all other GWEN panels are created) // Gwen::Controls::Canvas* pCanvas = new Gwen::Controls::Canvas(pSkin); pCanvas->SetSize(FrameBounds.right, FrameBounds.bottom); pCanvas->SetDrawBackground(true); pCanvas->SetBackgroundColor(Gwen::Color(150, 170, 170, 255)); // // Create our unittest control (which is a Window with controls in it) // UnitTest* pUnit = new UnitTest(pCanvas); pUnit->SetPos(10, 10); // // Create a Windows Control helper // (Processes Windows MSG's and fires input at GWEN) // Gwen::Input::Windows GwenInput; GwenInput.Initialize(pCanvas); // // Begin the main game loop // MSG msg; while (true) { // Skip out if the window is closed if (!IsWindowVisible(g_pHWND)) { break; } // If we have a message from windows.. if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { // .. give it to the input handler to process GwenInput.ProcessMessage(msg); // if it's QUIT then quit.. if (msg.message == WM_QUIT) { break; } // Handle the regular window stuff.. TranslateMessage(&msg); DispatchMessage(&msg); } else { float ClearColor[4] = { 0.128f, 0.128f, 0.3f, 1.0f }; // Normal DirectX rendering loop g_pd3dDevice->ClearRenderTargetView(g_pRenderTargetView, ClearColor); // This is how easy it is to render GWEN! pCanvas->RenderCanvas(); g_pSwapChain->Present(0, 0); } } delete pCanvas; delete pSkin; delete pRenderer; if (g_pRenderTargetView) { g_pRenderTargetView->Release(); g_pRenderTargetView = NULL; } if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; } if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } }
int main() { float retinaScale = 1.f; b3gDefaultOpenGLWindow* window = new b3gDefaultOpenGLWindow(); b3gWindowConstructionInfo wci; wci.m_width = sWidth; wci.m_height = sHeight; window->createWindow(wci); window->setResizeCallback(MyResizeCallback); window->setWindowTitle("render test"); #ifndef __APPLE__ glewInit(); #endif retinaScale = window->getRetinaScale(); primRenderer = new GLPrimitiveRenderer(sWidth,sHeight); sth_stash* font = initFont(primRenderer ); gwenRenderer = new GwenOpenGL3CoreRenderer(primRenderer,font,sWidth,sHeight,retinaScale); // // Create a GWEN OpenGL Renderer // // Gwen::Renderer::OpenGL_DebugFont * pRenderer = new Gwen::Renderer::OpenGL_DebugFont(); // // Create a GWEN skin // #ifdef USE_TEXTURED_SKIN Gwen::Skin::TexturedBase skin; skin.SetRender( pRenderer ); skin.Init("DefaultSkin.png"); #else Gwen::Skin::Simple skin; skin.SetRender( gwenRenderer ); #endif // // Create a Canvas (it's root, on which all other GWEN panels are created) // pCanvas = new Gwen::Controls::Canvas( &skin ); pCanvas->SetSize( sWidth, sHeight); pCanvas->SetDrawBackground( true ); pCanvas->SetBackgroundColor( Gwen::Color( 150, 170, 170, 255 ) ); window->setMouseButtonCallback(MyMouseButtonCallback); window->setMouseMoveCallback(MyMouseMoveCallback); // // Create our unittest control (which is a Window with controls in it) // UnitTest* pUnit = new UnitTest( pCanvas ); pUnit->SetPos( 10, 10 ); // // Create a Windows Control helper // (Processes Windows MSG's and fires input at GWEN) // //Gwen::Input::Windows GwenInput; //GwenInput.Initialize( pCanvas ); // // Begin the main game loop // // MSG msg; while( !window->requestedExit() ) { // Skip out if the window is closed //if ( !IsWindowVisible( g_pHWND ) ) //break; // If we have a message from windows.. // if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { // .. give it to the input handler to process // GwenInput.ProcessMessage( msg ); // if it's QUIT then quit.. // if ( msg.message == WM_QUIT ) // break; // Handle the regular window stuff.. // TranslateMessage(&msg); // DispatchMessage(&msg); } window->startRendering(); // Main OpenGL Render Loop { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glEnable(GL_BLEND); GLint err = glGetError(); assert(err==GL_NO_ERROR); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); err = glGetError(); assert(err==GL_NO_ERROR); err = glGetError(); assert(err==GL_NO_ERROR); glDisable(GL_DEPTH_TEST); err = glGetError(); assert(err==GL_NO_ERROR); //glColor4ub(255,0,0,255); err = glGetError(); assert(err==GL_NO_ERROR); err = glGetError(); assert(err==GL_NO_ERROR); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); // saveOpenGLState(width,height);//m_glutScreenWidth,m_glutScreenHeight); err = glGetError(); assert(err==GL_NO_ERROR); err = glGetError(); assert(err==GL_NO_ERROR); glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); err = glGetError(); assert(err==GL_NO_ERROR); err = glGetError(); assert(err==GL_NO_ERROR); glEnable(GL_BLEND); err = glGetError(); assert(err==GL_NO_ERROR); pCanvas->RenderCanvas(); // SwapBuffers( GetDC( g_pHWND ) ); } window->endRendering(); } window->closeWindow(); delete window; }