亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人精品在线视频观看| 成人美女视频在线看| 亚洲一二三专区| 亚洲国产综合人成综合网站| 亚洲天堂av一区| 一区二区三区中文字幕电影| 亚洲青青青在线视频| 亚洲美女免费视频| 午夜国产精品影院在线观看| 日本特黄久久久高潮| 久久99久久99| 粉嫩av一区二区三区| 一本大道久久a久久精品综合| 91在线播放网址| 欧美日韩夫妻久久| 欧美大片日本大片免费观看| 国产日韩精品一区| 一区二区三区在线播| 日韩成人av影视| 国产精品综合二区| 日本韩国欧美一区| 91精品免费在线| 国产精品女人毛片| 五月天一区二区| 韩国欧美国产一区| 91久久精品一区二区二区| 欧美福利视频导航| 国产网红主播福利一区二区| 中文字幕日本乱码精品影院| 亚洲国产精品久久久久秋霞影院 | 欧美高清性hdvideosex| 久久尤物电影视频在线观看| 国产精品福利一区| 日韩黄色小视频| 91色综合久久久久婷婷| 精品国产一区a| 亚洲黄色片在线观看| 久久精品国产一区二区三| av综合在线播放| 日韩三级伦理片妻子的秘密按摩| 国产精品嫩草99a| 免费高清在线视频一区·| 不卡的看片网站| 欧美v日韩v国产v| 亚洲一区二三区| 懂色av一区二区夜夜嗨| 日韩片之四级片| 午夜精品福利一区二区蜜股av | 色先锋资源久久综合| 2020日本不卡一区二区视频| 亚洲国产精品久久人人爱蜜臀| 国产成人精品亚洲日本在线桃色| 欧美伊人精品成人久久综合97| 久久先锋影音av| 天天综合网天天综合色| 97se亚洲国产综合自在线不卡 | 亚洲黄色片在线观看| 成人小视频免费在线观看| 91精品国产福利| 午夜视频在线观看一区二区三区| bt7086福利一区国产| 国产日韩欧美综合在线| 韩国一区二区在线观看| 日韩欧美美女一区二区三区| 亚州成人在线电影| 欧美亚洲综合久久| 亚洲精品国产一区二区三区四区在线 | 国产女人18毛片水真多成人如厕| 美女性感视频久久| 欧美电影免费观看高清完整版在| 日韩av一区二| 91精品国产入口| 日本在线观看不卡视频| 日韩一区二区三| 久久99深爱久久99精品| 久久一二三国产| 国产成人啪午夜精品网站男同| 精品国产3级a| 国产aⅴ综合色| 国产无人区一区二区三区| 国产成人99久久亚洲综合精品| 久久日韩精品一区二区五区| 精品伊人久久久久7777人| 亚洲精品在线一区二区| 国产一区二区中文字幕| 欧美激情一区在线| 91在线观看视频| 午夜视频一区二区| 日韩一区二区电影在线| 国产一区二区三区久久久 | 久久99国产精品久久99果冻传媒| 欧美成人在线直播| 大美女一区二区三区| 亚洲激情综合网| 日韩亚洲欧美在线观看| 国产一区二区毛片| 一区精品在线播放| 3751色影院一区二区三区| 久久国产日韩欧美精品| 亚洲欧美综合网| 这里只有精品电影| 国产精品中文字幕一区二区三区| 1区2区3区欧美| 欧美一区二区久久| 粉嫩欧美一区二区三区高清影视| 亚洲免费观看在线观看| 欧美成人a视频| 99精品视频在线观看免费| 免费视频最近日韩| 亚洲欧美经典视频| 日韩精品一区二区在线| 91亚洲男人天堂| 久久 天天综合| 一区二区三区精品视频在线| 日韩欧美高清一区| 色又黄又爽网站www久久| 精品一区二区三区蜜桃| 亚洲一区二区在线观看视频 | 亚洲精品视频免费看| 欧美tickle裸体挠脚心vk| 色94色欧美sute亚洲线路一ni| 另类人妖一区二区av| 一区二区欧美视频| 国产精品对白交换视频| 精品国产一区二区三区av性色| 欧洲精品在线观看| 成人国产精品免费观看| 国内不卡的二区三区中文字幕 | 中文字幕精品综合| 欧美一区二区三区白人| 色婷婷综合久久| 成人性生交大片免费看中文| 裸体在线国模精品偷拍| 亚洲国产一区在线观看| 亚洲免费三区一区二区| 国产精品久久久久久久久图文区 | 国产成人免费在线视频| 欧美aaaaaa午夜精品| 亚洲成人激情自拍| 亚洲国产成人91porn| 亚洲视频每日更新| 国产精品另类一区| 国产欧美日韩在线看| 久久久久久夜精品精品免费| 欧美一区二区三区小说| 欧美精品一卡两卡| 91精品国产综合久久久蜜臀粉嫩| 欧洲亚洲精品在线| 欧洲av一区二区嗯嗯嗯啊| 一本色道a无线码一区v| 色哟哟一区二区三区| 欧美在线色视频| 欧美综合一区二区三区| 在线视频一区二区三区| 日本韩国视频一区二区| 欧美性一二三区| 欧美日韩日本视频| 日韩手机在线导航| 久久亚洲精品小早川怜子| 国产欧美一二三区| 亚洲欧美成aⅴ人在线观看| 一区二区在线观看免费| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲免费在线看| 一级日本不卡的影视| 午夜成人免费视频| 紧缚捆绑精品一区二区| 国产成人自拍在线| 色www精品视频在线观看| 欧美性一二三区| 日韩欧美在线观看一区二区三区| 欧美电视剧免费全集观看| 国产精品欧美久久久久无广告| 亚洲女爱视频在线| 日本特黄久久久高潮| 国产91对白在线观看九色| 欧美在线色视频| 精品国产一区久久| 亚洲色图欧美在线| 久久精品免费看| 91色porny在线视频| 日韩欧美一卡二卡| ...中文天堂在线一区| 五月婷婷色综合| eeuss鲁一区二区三区| 欧美一级在线观看| 国产精品卡一卡二| 日韩av一二三| 91在线免费视频观看| 日韩一区二区三区观看| 亚洲欧美一区二区三区国产精品| 欧美aⅴ一区二区三区视频| 不卡的av网站| 日韩欧美国产一区二区在线播放 | 丝袜美腿亚洲一区| 成人的网站免费观看| 精品国产乱码久久久久久影片| 亚洲精品国产a| 成人午夜大片免费观看| 日韩精品一区二区三区老鸭窝|