BOOL SysInit(void) { if(bWindowed) { SAL_get_pixel_format(&ClientWindow.PixelPitch, &ClientWindow.BytesPerPixel, &ClientWindow.R_shift, &ClientWindow.R_mask, &ClientWindow.R_width, &ClientWindow.G_shift, &ClientWindow.G_mask, &ClientWindow.G_width, &ClientWindow.B_shift, &ClientWindow.B_mask, &ClientWindow.B_width); } else { GetDDrawPixelFormat(&ClientWindow); } if (!RenderInit(&ClientWindow)) return FALSE; return TRUE; }
int DispInit() { int Ret=0,MemLen=0; DisableDesktopWindowManager(); // Create the DirectDraw interface pDD=NULL; Ret=DirectDrawCreate(NULL,&pDD,NULL); if (Ret<0) return 1; if (pDD==NULL) return 1; // Set cooperation level pDD->SetCooperativeLevel(hFrameWnd,DDSCL_NORMAL); // Make primary surface Ret=MakePrimarySurface(); if (Ret!=0) return 1; Ret=1; if (TryOverlay) Ret=MakeOverlaySurface(); // Try overlay first if (Ret!=0) { // Else make buffer surface Ret=MakeBufferSurface(); if (Ret!=0) return 1; } // Render Init (precalc all colors) RenderInit(); // Create the memory buffer DispMemPitch=ScrnWidth*DispBpp; MemLen=ScrnHeight*DispMemPitch; DispMem=(unsigned char *)malloc(MemLen); if (DispMem==NULL) return 1; memset(DispMem,0,MemLen); return 0; }
pixel_city() { RandomInit (time (NULL)); RenderInit (); CameraInit (); TextureInit (); WorldInit (); resetviewport(); }
void AppInit (void) { RandomInit (time (NULL)); CameraInit (); RenderInit (); TextureInit (); WorldInit (); }
void Init() { LogInit(); LogSetLevel(LOG_DEBUG); SDL_Init(SDL_INIT_EVERYTHING); /* Initialize SDL */ window = SDL_CreateWindow("SDL_Shownn", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WINDOW_WIDTH, WINDOW_HEIGHT, 0); renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED|SDL_RENDERER_PRESENTVSYNC); NetInit(WINDOW_WIDTH, WINDOW_HEIGHT); RenderInit(renderer, WINDOW_WIDTH, WINDOW_HEIGHT); LogDebug("Init complete"); }
void __fastcall TFSSettings::GDIBtnClick(TObject *Sender) { int NewRenderMode; if (GDIBtn->Checked) NewRenderMode=RENDERGDI; else NewRenderMode=RENDERDDRAW; if (Form1->RenderMode!=NewRenderMode) { RenderEnd(); Form1->RenderMode=NewRenderMode; RenderInit(); AccurateInit(true); } }
int main(int argc, char **argv) { printf("OpenGL MipMap Example (C) 2014 PH3NOM\n"); RenderInit(); /* Initialize Open GL */ /* Load a PVR texture to OpenGL with No MipMap */ GLuint texID0 = glTextureLoadPVR("/rd/MP_512.pvr", 0, 0); /* Load a PVR texture to OpenGL with No MipMap, but use Open GL to create the MipMap */ GLuint texID1 = glTextureLoadPVR("/rd/MP_512.pvr", 0, 1); GLuint curTexID = texID0; GLfloat width = 480, height = 480; while(1) { switch(InputCallback()) { case INP_RESIZE_UP: ++width; ++height; break; case INP_RESIZE_DOWN: if(width > 1 && height > 1) { --width; --height; } break; case INP_NO_MIP_MAP: curTexID = texID0; break; case INP_USE_MIP_MAP: curTexID = texID1; break; } RenderTexturedQuadCentered(curTexID, width, height); glutSwapBuffers(); } return 0; }
void QUADAPULT_Init(const char* path) { if (!SortAndSweep::UnitTest()) exit(1); RenderInit(); const int NUM_TEXTURES = 10; static const char* textureArray[NUM_TEXTURES] = { "texture/a.tga", "texture/b.tga", "texture/c.tga", "texture/d.tga", "texture/e.tga", "texture/f.tga", "texture/g.tga", "texture/h.tga", "texture/i.tga", "texture/j.tga", }; /* "texture/k.tga", "texture/l.tga", "texture/m.tga", "texture/n.tga", "texture/o.tga", "texture/p.tga", "texture/q.tga", "texture/r.tga", "texture/s.tga", "texture/t.tga", "texture/u.tga", "texture/v.tga", "texture/w.tga", "texture/x.tga", "texture/y.tga", "texture/z.tga"}; */ srand(10); //srand(12); Texture::SetSearchPath(path); for (int i = 0; i < NUM_TEXTURES; ++i) { Texture* texture = new Texture(); texture->SetMinFilter(GL_LINEAR); texture->SetMagFilter(GL_LINEAR); texture->SetSWrap(GL_CLAMP_TO_EDGE); texture->SetTWrap(GL_CLAMP_TO_EDGE); bool ret = texture->LoadFromFile(textureArray[i], Texture::FlipVertical); assert(ret); s_textureVec.push_back(texture); } // init the s_texMap (used by StateSort) for (unsigned int i = 0; i < s_textureVec.size(); ++i) { const Texture* texture = s_textureVec[i]; assert(texture); s_texMap[texture] = SpriteVec(); } const float WIDTH = 320.0f; const float HEIGHT = 480.0f; const float SIZE = 5;//30; const int NUM_SPRITES = 1000; // special case this is meant to indicate the "screen"! s_screenSprite = new Sprite(); Vector2f pos(RandomScalar(0.0f, WIDTH - SIZE), RandomScalar(0.0f, HEIGHT - SIZE)); Vector2f size(Vector2f(SIZE, SIZE)); float depth = -FLT_MAX; s_screenSprite->SetPosition(pos); s_screenSprite->SetSize(size); s_screenSprite->SetDepth(depth); s_screenSprite->SetName("screen"); SortAndSweep::AABB* screenBox = s_sortAndSweep.AllocAABB(); screenBox->Set(Vector2f(0, 0), Vector2f(WIDTH, HEIGHT), reinterpret_cast<void*>(s_screenSprite)); s_sortAndSweep.Insert(screenBox); s_spriteVec.reserve(NUM_SPRITES); for (int i = 0; i < NUM_SPRITES; ++i) { Sprite* sprite = new Sprite(); Vector2f pos(RandomScalar(0.0f, WIDTH - SIZE), RandomScalar(0.0f, HEIGHT - SIZE)); Vector2f size(Vector2f(SIZE, SIZE)); float depth = RandomScalar(0.0f, 1.0f); sprite->SetColor(Vector4f(RandomScalar(0.0f, 1.0f), RandomScalar(0.0f, 1.0f), RandomScalar(0.0f, 1.0f), 0.9f)); sprite->SetPosition(pos); sprite->SetSize(size); sprite->SetDepth(depth); //int texNum = RandomInt(0, NUM_TEXTURES-1); int texNum = i % NUM_TEXTURES; sprite->SetTexture(s_textureVec[texNum]); char temp[512]; sprintf(temp, "%d:%s[%.3f]", i, textureArray[texNum], depth); sprite->SetName(temp); s_spriteVec.push_back(sprite); SortAndSweep::AABB* spriteBox = s_sortAndSweep.AllocAABB(); spriteBox->Set(pos, pos + size, reinterpret_cast<void*>(sprite)); s_sortAndSweep.Insert(spriteBox); } printf("m_overlapVec.size = %lu\n", s_sortAndSweep.GetOverlapPairSet().size()); Matrixf proj = Matrixf::Ortho(0, WIDTH, HEIGHT, 0, -10, 10); glMatrixMode(GL_PROJECTION); glLoadMatrixf(reinterpret_cast<float*>(&proj)); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_TEXTURE_2D); }
int main(int argc, char* argv[]) { printf("START! pid = %d\n", getpid()); if (!system("./restart.rb")) exit(1); if (signal(SIGUSR1, RestartHandler) == SIG_ERR) { fprintf(stderr, "An error occurred while setting a signal handler.\n"); exit(1); } bool fullscreen = true; s_config = new AppConfig(fullscreen, false, 1280, 800); SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); SDL_Window* displayWindow; SDL_Renderer* displayRenderer; uint32_t flags = SDL_WINDOW_OPENGL | (s_config->fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0); int err = SDL_CreateWindowAndRenderer(s_config->width, s_config->height, flags, &displayWindow, &displayRenderer); if (err == -1 || !displayWindow || !displayRenderer) { fprintf(stderr, "SDL_CreateWindowAndRenderer failed!\n"); } SDL_RendererInfo displayRendererInfo; SDL_GetRendererInfo(displayRenderer, &displayRendererInfo); /* TODO: Check that we have OpenGL */ if ((displayRendererInfo.flags & SDL_RENDERER_ACCELERATED) == 0 || (displayRendererInfo.flags & SDL_RENDERER_TARGETTEXTURE) == 0) { /* TODO: Handle this. We have no render surface and not accelerated. */ fprintf(stderr, "NO RENDERER wtf!\n"); } atexit(SDL_Quit); JOYSTICK_Init(); AppConfig& config = *s_config; config.title = "riftty"; //SDL_WM_SetCaption(config.title.c_str(), config.title.c_str()); //SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); /* // clear glClearColor(s_clearColor.x, s_clearColor.y, s_clearColor.z, s_clearColor.w); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); SDL_GL_SwapWindow(displayWindow); */ RiftSetup(); RenderInit(); win_init(); init_config(); struct passwd *pw = getpwuid(getuid()); const char *homedir = pw->pw_dir; char config_filename[512]; strncpy(config_filename, homedir, 512); strncat(config_filename, "/.riftty", 512); load_config(config_filename); cs_init(); // TODO: code pages do not want // TODO: determine this based on window-size & font-size or vice versa. cfg.rows = 25; cfg.cols = 80; // TODO: load config from /etc/riffty or ~/.rifttyrc finish_config(); win_reconfig(); // TODO: get SHELL from env cs_reconfig(); // TODO: do not want term_init(); term_reset(); term_resize(cfg.rows, cfg.cols); // TODO: int font_width = 10; int font_height = 10; unsigned short term_width = font_width * cfg.cols; unsigned short term_height = font_height * cfg.rows; char login[128]; strncpy(login, getlogin(), 128); const char* login_argv[] = {"login", "-pfl", login, NULL}; unsigned short rows = cfg.rows; unsigned short cols = cfg.cols; winsize ws = {rows, cols, term_width, term_height}; child_create(login_argv, &ws); bool done = false; while (!done) { JOYSTICK_ClearFlags(); SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: done = true; break; case SDL_MOUSEMOTION: if (event.motion.state & SDL_BUTTON(1)) { // move touch } break; case SDL_MOUSEBUTTONDOWN: if (event.button.button == SDL_BUTTON_LEFT) { // start touch } break; case SDL_MOUSEBUTTONUP: if (event.button.button == SDL_BUTTON_LEFT) { // end touch } break; case SDL_JOYAXISMOTION: JOYSTICK_UpdateMotion(&event.jaxis); break; case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: JOYSTICK_UpdateButton(&event.jbutton); break; case SDL_KEYDOWN: case SDL_KEYUP: if (ProcessKeyEvent(&event.key)) { done = true; } break; } } if (!done) { if (s_needsRestart) Restart(); unsigned int now = SDL_GetTicks(); // milliseconds float dt = (now - s_ticks) / 1000.0f; // convert to seconds. s_ticks = now; //printf("fps = %.0f\n", 1.0f/dt); Process(dt); Render(dt); } } child_kill(true); win_shutdown(); RiftShutdown(); JOYSTICK_Shutdown(); return 0; }
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_SIZE: { //gWidth = LOWORD(lParam); //gHeight = HIWORD(wParam); TIMECAPS tc; UINT wTimerRes; if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR) { // Error; application can't continue. } else { char buf[200]; sprintf_s(buf, "\nTimer %u", tc.wPeriodMin); OutputDebugStringA(buf); } HDC hdc = GetDC(hWnd); gSurface = CreateCompatibleDC(hdc); //HDC hdc = GetDC(hWnd); RECT rect; GetWindowRect(hWnd, &rect); gWidth = rect.right - rect.left; gHeight = rect.bottom - rect.top; gBitmap = CreateCompatibleBitmap(hdc, gWidth, gHeight); gOldBitmap = (HBITMAP)SelectObject(gSurface, gBitmap); DeleteDC(hdc); SetTimer(hWnd, IDT_TIMER, 10, NULL); RenderInit(); //resize the backbuffer accordingly //SelectObject(gSurface, gOldBitmap); DeleteDC(hdc); } case WM_CREATE: { BOOL comp; if (DwmIsCompositionEnabled(&comp) != S_OK) { exit(0); } break; } case WM_KEYDOWN: { RECT r = { 0, gHeight - 10, gWidth, gHeight }; //ScrollWindow(gHwnd, 0, -10, NULL, NULL); //startX += 10; startY += 16; //InvalidateRect(hWnd, NULL, FALSE); Render(gSurface); break; } case WM_BLIT_REQUEST: /*hdc = GetDC(hWnd); gVsyncWin->TimerBlit(hdc); DeleteDC(hdc);*/ //gVsyncWin->TimerBlit(); break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: //init(); DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... //Render(gSurface); //Rectangle(hdc, 100, 100, 500, 500); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_TIMER: switch (wParam) { case IDT_TIMER: gOldBitmap = (HBITMAP)SelectObject(gSurface, gBitmap); //startY += 16; Render(gSurface); SelectObject(gSurface, gOldBitmap); break; case TIMER_VSYNC: //gVsyncWin->TimerBlit(); break; } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
void Display() { float buffer[16]; RenderInit(); //Pass1 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, view1->w, view1->h); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt( light1->lightList[0].position[0], light1->lightList[0].position[1], light1->lightList[0].position[2],// eye view1->center[0], view1->center[1], view1->center[2], // center view1->up[0]+1, view1->up[1], view1->up[2]); // up //kkk 9.4 problem glGetFloatv(GL_MODELVIEW_MATRIX, buffer); for(int i = 0; i < 16; i++) LightViewMatrix.M[i] = buffer[i]; glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(view1->fovy*1.4, (GLfloat)WinW/(GLfloat)WinH, view1->dnear*4, view1->dfar);//fovy aspect near far glGetFloatv(GL_PROJECTION_MATRIX, buffer); for(int i = 0; i < 16; i++) LightProjectionMatrix.M[i] = buffer[i]; glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, FBO); glDrawBuffers(0, NULL); glReadBuffer(GL_NONE); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, ShadowMap, 0); glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); //we don't use it because there are thin plane. If we cull front, shadowmap can't see thin plane. //glCullFace(GL_FRONT); //kkk problem glShadeModel(GL_FLAT); glColorMask(0, 0, 0, 0); //kkk RenderObjects switch(scene_num) { case 1: RenderObjects(true, object1, 0); RenderObjects(true, object2, 1); break; case 2: RenderObjects(true, object1, 0); RenderObjects(true, object2, 1); break; case 3: RenderObjects(true, object1, 0); RenderObjects(true, object2, 1); RenderObjects(true, object3, 2); break; } //glCullFace(GL_BACK); glShadeModel(GL_SMOOTH); glColorMask(1, 1, 1, 1); glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); //Pass2 glViewport(view1->x, view1->y, view1->w, view1->h); // Reset The Current Viewport glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); //glLoadMatrixf(&ViewMatrix); glLoadIdentity(); gluLookAt( view1->eye[0], view1->eye[1], view1->eye[2],// eye view1->center[0], view1->center[1], view1->center[2], // center view1->up[0], view1->up[1], view1->up[2]); // up glGetFloatv(GL_MODELVIEW_MATRIX, buffer); for(int i = 0; i < 16; i++) ViewMatrix.M[i] = buffer[i]; ViewMatrixInverse = inverse(ViewMatrix); glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glLoadIdentity(); gluPerspective(view1->fovy, (GLfloat)WinW/(GLfloat)WinH, view1->dnear, view1->dfar);//fovy aspect near far if(scene_num == 3) light1->lightList[0].position[3] = 1; glEnable(GL_LIGHTING); for(int i = 0; i < light1->now; i++) { glEnable(GL_LIGHT0 + i); //some problem about GL_POSITION glLightfv(GL_LIGHT0 + i, GL_POSITION, light1->lightList[i].position); glLightfv(GL_LIGHT0 + i, GL_AMBIENT, light1->lightList[i].ambient); glLightfv(GL_LIGHT0 + i, GL_DIFFUSE, light1->lightList[i].diffuse); glLightfv(GL_LIGHT0 + i, GL_SPECULAR, light1->lightList[i].specular); //glLightModelfv(GL_LIGHT_MODEL_AMBIENT, light1->total_ambient); //cout << "i:" << i << " " << light1->position[i] << light1->ambient[i] << light1->diffuse[i] << light1->specular[i] << endl; } glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glUseProgram(MyShader); ShadowMatrix = BiasMatrix * LightProjectionMatrix * LightViewMatrix * ViewMatrixInverse; //kkk glUniformMatrix4fv(UniformLocations[0], 1, GL_FALSE, &ShadowMatrix); glBindTexture(GL_TEXTURE_2D, ShadowMap); //kkk RenderObjects switch(scene_num) { case 1: RenderObjects(false, object1, 0); RenderObjects(false, object2, 1); break; case 2: RenderObjects(false, object1, 0); RenderObjects(false, object2, 1); break; case 3: RenderObjects(false, object1, 0); RenderObjects(false, object2, 1); RenderObjects(false, object3, 2); break; } glDisable(GL_LIGHTING); glUseProgram(0); glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); glDisable(GL_TEXTURE_2D); if(ShowShadowMap) { glViewport(0, 0, 512, 512); glMatrixMode(GL_PROJECTION); glLoadMatrixf(&ortho(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f)); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, ShadowMap); glColor3f(100.0f, 100.0f, 100.0f); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex2f(0.0f, 0.0f); glTexCoord2f(1.0f, 0.0f); glVertex2f(1.0f, 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f, 1.0f); glTexCoord2f(0.0f, 1.0f); glVertex2f(0.0f, 1.0f); glEnd(); glBindTexture(GL_TEXTURE_2D, 0); glDisable(GL_TEXTURE_2D); } glutSwapBuffers(); glutPostRedisplay(); }
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { // Window WNDCLASSEX wc = { sizeof(wc) }; wc.lpszClassName = L"MainWnd"; wc.lpfnWndProc = MainWndProc; wc.hIcon = LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_LD24)); wc.hCursor = LoadCursor(0, MAKEINTRESOURCE(IDC_ARROW)); RegisterClassEx(&wc); DWORD style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU; DWORD styleEx = WS_EX_WINDOWEDGE; RECT rcWin = { 0, 0, kWinWidth * 4, kWinHeight * 4 }; AdjustWindowRectEx(&rcWin, style, FALSE, styleEx); OffsetRect(&rcWin, 100, 100); gMainWnd = CreateWindowEx(styleEx, wc.lpszClassName, L"LD24 - Super Conga Kat", style, rcWin.left, rcWin.top, rcWin.right - rcWin.left, rcWin.bottom - rcWin.top, 0, 0, 0, 0); ShowWindow(gMainWnd, SW_SHOWNORMAL); // Graphics if ((gD3d = Direct3DCreate9(D3D_SDK_VERSION)) == 0) { Panic("D3DCreate failed - do you have D3D9 installed?"); } D3DPRESENT_PARAMETERS pp = { }; pp.Windowed = TRUE; pp.SwapEffect = D3DSWAPEFFECT_DISCARD; pp.BackBufferWidth = kWinWidth; pp.BackBufferHeight = kWinHeight; pp.BackBufferFormat = D3DFMT_A8R8G8B8; pp.hDeviceWindow = gMainWnd; pp.PresentationInterval = D3DPRESENT_INTERVAL_ONE; if (FAILED(gD3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, gMainWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &pp, &gDevice))) { Panic("D3D CreateDevice failed - do you have D3D9 installed?"); } D3DVIEWPORT9 vp; vp.Width = kWinWidth; vp.Height = kWinHeight; vp.MinZ = 0.0f; vp.MaxZ = 1.0f; vp.X = 0; vp.Y = 0; gDevice->SetViewport(&vp); gpu::Init(); // Audio SoundInit(); // Keys int locKeyW = MapVirtualKey(0x11, MAPVK_VSC_TO_VK); int locKeyS = MapVirtualKey(0x1F, MAPVK_VSC_TO_VK); int locKeyA = MapVirtualKey(0x1E, MAPVK_VSC_TO_VK); int locKeyD = MapVirtualKey(0x20, MAPVK_VSC_TO_VK); int locKeyZ = MapVirtualKey(0x2C, MAPVK_VSC_TO_VK); // Main void RenderInit(); RenderInit(); void GameInit(); GameInit(); for(;;) { MSG msg; if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) break; TranslateMessage(&msg); DispatchMessage(&msg); } else { if (gDevice) { gDevice->BeginScene(); void RenderPreUpdate(); RenderPreUpdate(); gKeyUp = gHasFocus && (((GetAsyncKeyState(VK_UP) & 0x8000) != 0) || ((GetAsyncKeyState(locKeyW) & 0x8000) != 0)); gKeyDown = gHasFocus && (((GetAsyncKeyState(VK_DOWN) & 0x8000) != 0) || ((GetAsyncKeyState(locKeyS) & 0x8000) != 0)); gKeyLeft = gHasFocus && (((GetAsyncKeyState(VK_LEFT) & 0x8000) != 0) || ((GetAsyncKeyState(locKeyA) & 0x8000) != 0)); gKeyRight = gHasFocus && (((GetAsyncKeyState(VK_RIGHT) & 0x8000) != 0) || ((GetAsyncKeyState(locKeyD) & 0x8000) != 0)); gKeyFire = gHasFocus && (((GetAsyncKeyState(VK_SPACE) & 0x8000) != 0) || ((GetAsyncKeyState(VK_RETURN) & 0x8000) != 0) || ((GetAsyncKeyState(locKeyZ) & 0x8000) != 0)); void GameUpdate(); GameUpdate(); void RenderGame(); RenderGame(); gDevice->EndScene(); gDevice->Present(0, 0, 0, 0); } Sleep(gHasFocus ? 0 : 250); } } gDevice->SetVertexDeclaration(0); gDevice->SetVertexShader(0); gDevice->SetPixelShader(0); gDevice->SetTexture(0, 0); SoundShutdown(); void RenderShutdown(); RenderShutdown(); gDevice->Release(); gD3d->Release(); DestroyWindow(gMainWnd); return 0; }