bool DirectX10Renderer::Initialise(HWND* handle) { DEBUG_OUT("DirectX10Renderer::Initialise"); //window handle hWnd = handle; //get window dimensions RECT rc; GetClientRect( *hWnd, &rc ); m_ScreenWidth = rc.right - rc.left; m_ScreenHeight = rc.bottom - rc.top; m_CameraX = 0; m_CameraY = 0; if(!CreateSwapChainAndDevice()) return false; if(!ResizeScreen()) return false; if(!LoadShadersAndCreateInputLayouts()) return false; if(!InitialiseBuffers()) return false; // Load textures if(FAILED(D3DX10CreateShaderResourceViewFromFile(pD3DDevice, "./textures/tiles.png", NULL, NULL, &m_SpriteTexture, NULL))) { return FatalError("Could not load sprite texture"); } if(FAILED(D3DX10CreateShaderResourceViewFromFile(pD3DDevice, "./fonts/default.png", NULL, NULL, &m_FontTexture, NULL))) { return FatalError("Could not load font texture"); } //everything completed successfully return true; }
bool DirectX10Renderer::Update() { RECT rc; GetClientRect(*hWnd, &rc); UINT width = rc.right - rc.left; UINT height = rc.bottom - rc.top; if(width != m_ScreenWidth || height != m_ScreenHeight) { if(!ResizeScreen()) { FatalError("Could not resize screen!"); return false; } } return true; }
//! presents the graphics void DirectX11Driver::Present() { HRESULT hr = m_SwapChain->Present(1, 0); m_ImmediateContext->DiscardView(m_RenderTargetView); m_ImmediateContext->DiscardView(m_DepthStencilView); if(hr == DXGI_ERROR_DEVICE_REMOVED) { // device lost m_SwapChain = NULL; Init(); ResizeScreen(Size(int(m_ViewPortArea.Size().X), int(m_ViewPortArea.Size().Y))); } else { SHOOT_LOG_WARNING(hr == S_OK, "Present Failed: %d", hr); } }
void Graphics::BroadcastMessage(Message * message) { if(message->msgID == MessageID::CharacterKey) { std::cout << "Character Key was pressed." << std::endl; if ((size_t)message->info == sf::Keyboard::F1) { fullscreen = !fullscreen; g_App->create(fullscreen ? sf::VideoMode::getDesktopMode() : sf::VideoMode(800, 600, 32) , "ParticleTest", (fullscreen ? sf::Style::Fullscreen : sf::Style::Resize | sf::Style::Close)); ResizeScreen(g_App->getSize().x, g_App->getSize().y); } } else if(message->msgID == MessageID::Spawn) CallSpawnFunction(dynamic_cast<SpawnMessage *>(message)); };
//! driver initialization void DirectX11Driver::Init() { super::Init(); UINT creationFlags = 0; #if defined(_DEBUG) creationFlags |= D3D11_CREATE_DEVICE_DEBUG; #endif D3D_FEATURE_LEVEL featureLevels[] = { //D3D_FEATURE_LEVEL_11_1, //D3D_FEATURE_LEVEL_11_0, //D3D_FEATURE_LEVEL_10_1, //D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_9_3 // max compatibility with Windows Phone 8 }; ID3D11Device* pDevice = NULL; ID3D11DeviceContext* pContext = NULL; DX_ASSERT(D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, creationFlags, featureLevels, ARRAYSIZE(featureLevels), D3D11_SDK_VERSION, &pDevice, &m_FeatureLevel, &pContext)); ID3D11Device1* pDevice1 = NULL; ID3D11DeviceContext1* pContext1 = NULL; DX_ASSERT(pDevice->QueryInterface(__uuidof(ID3D11Device1), (void**)&pDevice1)); DX_ASSERT(pContext->QueryInterface(__uuidof(ID3D11DeviceContext1), (void**)&pContext1)); m_Device = pDevice1; m_ImmediateContext = pContext1; pDevice->Release(); pContext->Release(); #if SHOOT_PLATFORM != SHOOT_PLATFORM_WP8 if(!m_RenderTargetView.Get()) { ResizeScreen(Size(int(m_ViewPortArea.Size().X), int(m_ViewPortArea.Size().Y))); } #endif }
void DoResizeScreen (XtermWidget xw) { int border = 2 * xw->screen.border; ResizeScreen (xw, border + xw->screen.fullVwin.sb_info.width,border); }
/** * Die Nachrichtenschleife. * * @return @p true bei Erfolg, @p false bei Fehler */ bool VideoSDL::MessageLoop() { SDL_Event ev; static bool mouse_motion = 0; while(SDL_PollEvent(&ev)) { switch(ev.type) { default: break; case SDL_QUIT: return false; case SDL_ACTIVEEVENT: if((ev.active.state & SDL_APPACTIVE) && ev.active.gain) { // Window was restored. We need a resize to avoid a black screen CallBack->ScreenResized(screenWidth, screenHeight); } break; case SDL_VIDEORESIZE: { ResizeScreen(ev.resize.w, ev.resize.h, isFullscreen_); CallBack->ScreenResized(screenWidth, screenHeight); } break; case SDL_KEYDOWN: { KeyEvent ke = { KT_INVALID, 0, false, false, false }; switch(ev.key.keysym.sym) { default: { // Die 12 F-Tasten if(ev.key.keysym.sym >= SDLK_F1 && ev.key.keysym.sym <= SDLK_F12) ke.kt = static_cast<KeyType>(KT_F1 + ev.key.keysym.sym - SDLK_F1); } break; case SDLK_RETURN: ke.kt = KT_RETURN; break; case SDLK_SPACE: ke.kt = KT_SPACE; break; case SDLK_LEFT: ke.kt = KT_LEFT; break; case SDLK_RIGHT: ke.kt = KT_RIGHT; break; case SDLK_UP: ke.kt = KT_UP; break; case SDLK_DOWN: ke.kt = KT_DOWN; break; case SDLK_BACKSPACE: ke.kt = KT_BACKSPACE; break; case SDLK_DELETE: ke.kt = KT_DELETE; break; case SDLK_LSHIFT: ke.kt = KT_SHIFT; break; case SDLK_RSHIFT: ke.kt = KT_SHIFT; break; case SDLK_TAB: ke.kt = KT_TAB; break; case SDLK_HOME: ke.kt = KT_HOME; break; case SDLK_END: ke.kt = KT_END; break; case SDLK_ESCAPE: ke.kt = KT_ESCAPE; break; case SDLK_BACKQUOTE: ev.key.keysym.unicode = '^'; break; } /// Strg, Alt, usw gedrückt? if(ev.key.keysym.mod & KMOD_CTRL) ke.ctrl = true; if(ev.key.keysym.mod & KMOD_SHIFT) ke.shift = true; if(ev.key.keysym.mod & KMOD_ALT) ke.alt = true; if(ke.kt == KT_INVALID) { ke.kt = KT_CHAR; ke.c = ev.key.keysym.unicode; } CallBack->Msg_KeyDown(ke); } break; case SDL_MOUSEBUTTONDOWN: { mouse_xy.x = ev.button.x; mouse_xy.y = ev.button.y; if(/*!mouse_xy.ldown && */ev.button.button == SDL_BUTTON_LEFT) { mouse_xy.ldown = true; CallBack->Msg_LeftDown(mouse_xy); } if(/*!mouse_xy.rdown &&*/ ev.button.button == SDL_BUTTON_RIGHT) { mouse_xy.rdown = true; CallBack->Msg_RightDown(mouse_xy); } } break; case SDL_MOUSEBUTTONUP: { mouse_xy.x = ev.button.x; mouse_xy.y = ev.button.y; if(/*mouse_xy.ldown &&*/ ev.button.button == SDL_BUTTON_LEFT) { mouse_xy.ldown = false; CallBack->Msg_LeftUp(mouse_xy); } if(/*mouse_xy.rdown &&*/ ev.button.button == SDL_BUTTON_RIGHT) { mouse_xy.rdown = false; CallBack->Msg_RightUp(mouse_xy); } if(ev.button.button == SDL_BUTTON_WHEELUP) { CallBack->Msg_WheelUp(mouse_xy); } if(ev.button.button == SDL_BUTTON_WHEELDOWN) { CallBack->Msg_WheelDown(mouse_xy); } } break; case SDL_MOUSEMOTION: { if(!mouse_motion) { mouse_xy.x = ev.motion.x; mouse_xy.y = ev.motion.y; mouse_motion = 1; CallBack->Msg_MouseMove(mouse_xy); } } break; } } mouse_motion = 0; return true; }
bool MockupVideoDriver::CreateScreen(const std::string&, const VideoMode& newSize, bool fullscreen) { ResizeScreen(newSize, fullscreen); return true; }
void DoResizeScreen (register XtermWidget xw) { int border = 2 * xw->screen.border; ResizeScreen (xw, border + xw->screen.fullVwin.scrollbar, border); }