亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tunnel.~dpr

?? 用delphi編寫的一個3D隧道演示程序
?? ~DPR
?? 第 1 頁 / 共 2 頁
字號:
  begin
    MessageBox(0, 'Unable to unregister window class!', 'Error', MB_OK or MB_ICONERROR);
    hInstance := 0;
  end;
end;


{--------------------------------------------------------------------}
{  Creates the window and attaches a OpenGL rendering context to it  }
{--------------------------------------------------------------------}
function glCreateWnd(Width, Height : Integer; Fullscreen : Boolean; PixelDepth : Integer) : Boolean;
var
  wndClass : TWndClass;         // Window class
  dwStyle : DWORD;              // Window styles
  dwExStyle : DWORD;            // Extended window styles
  dmScreenSettings : DEVMODE;   // Screen settings (fullscreen, etc...)
  PixelFormat : GLuint;         // Settings for the OpenGL rendering
  h_Instance : HINST;           // Current instance
  pfd : TPIXELFORMATDESCRIPTOR;  // Settings for the OpenGL window
begin
  h_Instance := GetModuleHandle(nil);       //Grab An Instance For Our Window
  ZeroMemory(@wndClass, SizeOf(wndClass));  // Clear the window class structure

  with wndClass do                    // Set up the window class
  begin
    style         := CS_HREDRAW or    // Redraws entire window if length changes
                     CS_VREDRAW or    // Redraws entire window if height changes
                     CS_OWNDC;        // Unique device context for the window
    lpfnWndProc   := @WndProc;        // Set the window procedure to our func WndProc
    hInstance     := h_Instance;
    hCursor       := LoadCursor(0, IDC_ARROW);
    lpszClassName := 'OpenGL';
  end;

  if (RegisterClass(wndClass) = 0) then  // Attemp to register the window class
  begin
    MessageBox(0, 'Failed to register the window class!', 'Error', MB_OK or MB_ICONERROR);
    Result := False;
    Exit
  end;

  // Change to fullscreen if so desired
  if Fullscreen then
  begin
    ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));
    with dmScreenSettings do begin              // Set parameters for the screen setting
      dmSize       := SizeOf(dmScreenSettings);
      dmPelsWidth  := Width;                    // Window width
      dmPelsHeight := Height;                   // Window height
      dmBitsPerPel := PixelDepth;               // Window color depth
      dmFields     := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL;
    end;

    // Try to change screen mode to fullscreen
    if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then
    begin
      MessageBox(0, 'Unable to switch to fullscreen!', 'Error', MB_OK or MB_ICONERROR);
      Fullscreen := False;
    end;
  end;

  // If we are still in fullscreen then
  if (Fullscreen) then
  begin
    dwStyle := WS_POPUP or                // Creates a popup window
               WS_CLIPCHILDREN            // Doesn't draw within child windows
               or WS_CLIPSIBLINGS;        // Doesn't draw within sibling windows
    dwExStyle := WS_EX_APPWINDOW;         // Top level window
    ShowCursor(False);                    // Turn of the cursor (gets in the way)
  end
  else
  begin
    dwStyle := WS_OVERLAPPEDWINDOW or     // Creates an overlapping window
               WS_CLIPCHILDREN or         // Doesn't draw within child windows
               WS_CLIPSIBLINGS;           // Doesn't draw within sibling windows
    dwExStyle := WS_EX_APPWINDOW or       // Top level window
                 WS_EX_WINDOWEDGE;        // Border with a raised edge
  end;

  // Attempt to create the actual window
  h_Wnd := CreateWindowEx(dwExStyle,      // Extended window styles
                          'OpenGL',       // Class name
                          WND_TITLE,      // Window title (caption)
                          dwStyle,        // Window styles
                          0, 0,           // Window position
                          Width, Height,  // Size of window
                          0,              // No parent window
                          0,              // No menu
                          h_Instance,     // Instance
                          nil);           // Pass nothing to WM_CREATE
  if h_Wnd = 0 then
  begin
    glKillWnd(Fullscreen);                // Undo all the settings we've changed
    MessageBox(0, 'Unable to create window!', 'Error', MB_OK or MB_ICONERROR);
    Result := False;
    Exit;
  end;

  // Try to get a device context
  h_DC := GetDC(h_Wnd);
  if (h_DC = 0) then
  begin
    glKillWnd(Fullscreen);
    MessageBox(0, 'Unable to get a device context!', 'Error', MB_OK or MB_ICONERROR);
    Result := False;
    Exit;
  end;

  // Settings for the OpenGL window
  with pfd do
  begin
    nSize           := SizeOf(TPIXELFORMATDESCRIPTOR); // Size Of This Pixel Format Descriptor
    nVersion        := 1;                    // The version of this data structure
    dwFlags         := PFD_DRAW_TO_WINDOW    // Buffer supports drawing to window
                       or PFD_SUPPORT_OPENGL // Buffer supports OpenGL drawing
                       or PFD_DOUBLEBUFFER;  // Supports double buffering
    iPixelType      := PFD_TYPE_RGBA;        // RGBA color format
    cColorBits      := PixelDepth;           // OpenGL color depth
    cRedBits        := 0;                    // Number of red bitplanes
    cRedShift       := 0;                    // Shift count for red bitplanes
    cGreenBits      := 0;                    // Number of green bitplanes
    cGreenShift     := 0;                    // Shift count for green bitplanes
    cBlueBits       := 0;                    // Number of blue bitplanes
    cBlueShift      := 0;                    // Shift count for blue bitplanes
    cAlphaBits      := 0;                    // Not supported
    cAlphaShift     := 0;                    // Not supported
    cAccumBits      := 0;                    // No accumulation buffer
    cAccumRedBits   := 0;                    // Number of red bits in a-buffer
    cAccumGreenBits := 0;                    // Number of green bits in a-buffer
    cAccumBlueBits  := 0;                    // Number of blue bits in a-buffer
    cAccumAlphaBits := 0;                    // Number of alpha bits in a-buffer
    cDepthBits      := 16;                   // Specifies the depth of the depth buffer
    cStencilBits    := 0;                    // Turn off stencil buffer
    cAuxBuffers     := 0;                    // Not supported
    iLayerType      := PFD_MAIN_PLANE;       // Ignored
    bReserved       := 0;                    // Number of overlay and underlay planes
    dwLayerMask     := 0;                    // Ignored
    dwVisibleMask   := 0;                    // Transparent color of underlay plane
    dwDamageMask    := 0;                     // Ignored
  end;

  // Attempts to find the pixel format supported by a device context that is the best match to a given pixel format specification.
  PixelFormat := ChoosePixelFormat(h_DC, @pfd);
  if (PixelFormat = 0) then
  begin
    glKillWnd(Fullscreen);
    MessageBox(0, 'Unable to find a suitable pixel format', 'Error', MB_OK or MB_ICONERROR);
    Result := False;
    Exit;
  end;

  // Sets the specified device context's pixel format to the format specified by the PixelFormat.
  if (not SetPixelFormat(h_DC, PixelFormat, @pfd)) then
  begin
    glKillWnd(Fullscreen);
    MessageBox(0, 'Unable to set the pixel format', 'Error', MB_OK or MB_ICONERROR);
    Result := False;
    Exit;
  end;

  // Create a OpenGL rendering context
  h_RC := wglCreateContext(h_DC);
  if (h_RC = 0) then
  begin
    glKillWnd(Fullscreen);
    MessageBox(0, 'Unable to create an OpenGL rendering context', 'Error', MB_OK or MB_ICONERROR);
    Result := False;
    Exit;
  end;

  // Makes the specified OpenGL rendering context the calling thread's current rendering context
  if (not wglMakeCurrent(h_DC, h_RC)) then
  begin
    glKillWnd(Fullscreen);
    MessageBox(0, 'Unable to activate OpenGL rendering context', 'Error', MB_OK or MB_ICONERROR);
    Result := False;
    Exit;
  end;

  // Initializes the timer used to calculate the FPS
  SetTimer(h_Wnd, FPS_TIMER, FPS_INTERVAL, nil);

  // Settings to ensure that the window is the topmost window
  ShowWindow(h_Wnd, SW_SHOW);
  SetForegroundWindow(h_Wnd);
  SetFocus(h_Wnd);

  // Ensure the OpenGL window is resized properly
  glResizeWnd(Width, Height);
  glInit();

  Result := True;
end;


{--------------------------------------------------------------------}
{  Main message loop for the application                             }
{--------------------------------------------------------------------}
function WinMain(hInstance : HINST; hPrevInstance : HINST;
                 lpCmdLine : PChar; nCmdShow : Integer) : Integer; stdcall;
var
  msg : TMsg;
  finished : Boolean;
  DemoStart, LastTime : DWord;
begin
  finished := False;

  // Perform application initialization:
  if not glCreateWnd(800, 600, FALSE, 32) then
  begin
    Result := 0;
    Exit;
  end;

  DemoStart := GetTickCount();            // Get Time when demo started

  // Main message loop:
  while not finished do
  begin
    if (PeekMessage(msg, 0, 0, 0, PM_REMOVE)) then // Check if there is a message for this window
    begin
      if (msg.message = WM_QUIT) then     // If WM_QUIT message received then we are done
        finished := True
      else
      begin                               // Else translate and dispatch the message to this window
  	TranslateMessage(msg);
        DispatchMessage(msg);
      end;
    end
    else
    begin
      Inc(FPSCount);                      // Increment FPS Counter

      LastTime :=ElapsedTime;
      ElapsedTime :=GetTickCount() - DemoStart;     // Calculate Elapsed Time
      ElapsedTime :=(LastTime + ElapsedTime) DIV 2; // Average it out for smoother movement

      glDraw();                           // Draw the scene
      SwapBuffers(h_DC);                  // Display the scene

      if (keys[VK_ESCAPE]) then           // If user pressed ESC then set finised TRUE
        finished := True
      else
        ProcessKeys;                      // Check for any other key Pressed
    end;
  end;
  glKillWnd(FALSE);
  Result := msg.wParam;
end;


begin
  WinMain( hInstance, hPrevInst, CmdLine, CmdShow );
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大合| 国产在线精品一区二区| 久久久久久97三级| 欧美精品在线观看播放| 欧美性一二三区| 在线观看亚洲专区| 色久综合一二码| 91美女在线视频| 色综合久久久久网| 91丝袜美腿高跟国产极品老师| 成人午夜激情片| 成人免费视频网站在线观看| 国产成人免费av在线| 国产xxx精品视频大全| 国产精品综合久久| 成人黄色大片在线观看| 福利一区在线观看| 91网上在线视频| 欧美在线色视频| 欧美乱妇15p| 日韩欧美亚洲另类制服综合在线| 欧美一卡2卡三卡4卡5免费| 91精品国产色综合久久 | 欧美电影免费提供在线观看| 欧美性感一区二区三区| 欧美日韩在线亚洲一区蜜芽| 欧美福利视频导航| 久久亚洲免费视频| 日韩美女啊v在线免费观看| 一区二区三区色| 日本不卡视频在线观看| 国产呦萝稀缺另类资源| a级高清视频欧美日韩| 欧美亚洲精品一区| 久久综合精品国产一区二区三区| 国产精品九色蝌蚪自拍| 亚洲一区二区欧美激情| 麻豆91在线播放| voyeur盗摄精品| 欧美日韩国产高清一区二区三区 | 国产成人精品aa毛片| 色噜噜狠狠一区二区三区果冻| 一本久久精品一区二区| 欧美va天堂va视频va在线| 自拍偷拍欧美激情| 激情亚洲综合在线| 在线观看网站黄不卡| 欧美精品一区二区蜜臀亚洲| 亚洲精品视频一区| 韩国理伦片一区二区三区在线播放| 国产福利一区二区三区| 欧美日韩一级视频| 国产精品久久久久精k8| 日本在线不卡视频一二三区| 成人av网站在线| 欧美成人性战久久| 亚洲午夜国产一区99re久久| 国产精品18久久久久久久久| 91精品在线免费观看| 国产精品久久久久久久午夜片| 捆绑变态av一区二区三区| 日本二三区不卡| 国产精品美女久久久久久久网站| 另类小说视频一区二区| 欧美私模裸体表演在线观看| 成人欧美一区二区三区白人 | 精品久久久久久久久久久院品网| 亚洲卡通欧美制服中文| 国产精品一区二区在线观看网站| 欧美高清视频一二三区| 亚洲最色的网站| 91免费看`日韩一区二区| 国产三级精品视频| 国产在线播精品第三| 欧美精品亚洲二区| 亚洲电影一区二区三区| 在线观看日产精品| 尤物视频一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品欧美一区二区三区| 韩国一区二区三区| 久久蜜桃av一区二区天堂| 六月婷婷色综合| 日韩欧美你懂的| 精品一区二区三区蜜桃| 日韩精品一区国产麻豆| 久久99久久精品| 精品日韩一区二区| 激情成人综合网| 久久蜜桃av一区二区天堂| 国产精品一二三在| 国产人妖乱国产精品人妖| 99久久精品国产毛片| 亚洲国产精品国自产拍av| 国产成人欧美日韩在线电影| 欧美国产日韩亚洲一区| va亚洲va日韩不卡在线观看| 亚洲色图欧美激情| 欧美日韩一区二区欧美激情| 日本麻豆一区二区三区视频| 欧美成人一区二区| 丰满岳乱妇一区二区三区| 亚洲另类中文字| 欧美一区二区三区在线看| 久久超碰97中文字幕| 国产清纯白嫩初高生在线观看91| 国产凹凸在线观看一区二区| 亚洲精品欧美在线| 日韩欧美一级二级| 99热这里都是精品| 五月天欧美精品| 国产日韩欧美不卡在线| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产视频一区在线观看| 94色蜜桃网一区二区三区| 亚洲bt欧美bt精品| 久久久久久久免费视频了| 91黄视频在线| 国产在线一区二区| 亚洲免费观看在线观看| 日韩一区二区免费在线观看| 粉嫩蜜臀av国产精品网站| 亚洲国产精品久久久久秋霞影院 | 国产伦精品一区二区三区免费迷| 国产精品灌醉下药二区| 欧美一级精品在线| 97se亚洲国产综合自在线不卡 | 久久国产尿小便嘘嘘尿| 国产精品久久久久久久久快鸭 | 国产精品自拍av| 亚洲综合成人网| 久久久精品综合| 欧美电影在线免费观看| 成人丝袜高跟foot| 久久精品国产一区二区三| 亚洲免费观看高清完整| 亚洲精品一区二区三区福利| 欧美专区日韩专区| 成人精品视频一区二区三区尤物| 免费成人在线观看| 一区二区三区蜜桃| 亚洲三级免费观看| 国产亚洲欧美一区在线观看| 欧美一区午夜精品| 欧美性三三影院| 色综合色狠狠综合色| 国产999精品久久久久久绿帽| 免费观看日韩电影| 亚洲永久免费视频| 亚洲综合男人的天堂| 亚洲欧美日韩国产手机在线| 国产精品无圣光一区二区| 久久亚洲精华国产精华液| 精品久久国产字幕高潮| 日韩亚洲欧美一区二区三区| 欧美系列在线观看| 欧美亚洲动漫另类| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产白丝网站精品污在线入口| 精品系列免费在线观看| 强制捆绑调教一区二区| 日本欧美大码aⅴ在线播放| 青青草成人在线观看| 全部av―极品视觉盛宴亚洲| 亚洲一区电影777| 亚洲成人动漫一区| 天天色图综合网| 免费成人在线观看视频| 精品亚洲成a人| 国产精品亚洲一区二区三区在线| 韩日精品视频一区| 成人免费看黄yyy456| 播五月开心婷婷综合| 日本va欧美va瓶| 国产精品主播直播| 国产激情精品久久久第一区二区 | 久久精品国产99久久6| 蜜臂av日日欢夜夜爽一区| 麻豆久久久久久久| 国产一区二区三区黄视频 | av毛片久久久久**hd| 色婷婷综合久久久久中文| 欧美综合天天夜夜久久| 欧美成人a视频| 国产欧美精品区一区二区三区 | 一区二区三区在线视频观看| 一区二区三区中文字幕精品精品| 亚洲成人av电影在线| 久久爱另类一区二区小说| 高清视频一区二区| 在线亚洲一区观看| 欧美成人福利视频| 亚洲三级小视频| 九色|91porny| 色国产综合视频| 国产亚洲女人久久久久毛片| 一区二区三区四区精品在线视频| 看电影不卡的网站| 精品视频在线视频| 久久青草国产手机看片福利盒子|