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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tunnel.~dpr

?? 用delphi編寫的一個3D隧道演示程序
?? ~DPR
?? 第 1 頁 / 共 2 頁
字號:
program Tunnel;

uses
  Windows,
  Messages,
  OpenGL,
  BMP;

const
  WND_TITLE = 'Tunnel App by Jan Horn';
  FPS_TIMER = 1;                     // Timer to calculate FPS
  FPS_INTERVAL = 1000;               // Calculate FPS every 1000 ms

  TEXTURE_SPEED = 1/50;

type glCoord = Record
       X, Y, Z : glFLoat;
     end;
var
  h_Wnd  : HWND;                     // Global window handle
  h_DC   : HDC;                      // Global device context
  h_RC   : HGLRC;                    // OpenGL rendering context
  keys : Array[0..255] of Boolean;   // Holds keystrokes
  FPSCount : Integer = 1;            // Counter for FPS
  ElapsedTime : Integer;             // Elapsed time between frames

  // Textures
  TunnelTex : glUint;

  // User vaiables
  Tunnels : Array[0..32, 0..32] of glCoord;
  Angle : glFloat;
  Speed : glFloat;
  Manual : Boolean;

{$R *.RES}

procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;

{------------------------------------------------------------------}
{  Function to convert int to string. (No sysutils = smaller EXE)  }
{------------------------------------------------------------------}
function IntToStr(Num : Integer) : String;  // using SysUtils increase file size by 100K
begin
  Str(Num, result);
end;


{------------------------------------------------------------------}
{  Function to draw the actual scene                               }
{------------------------------------------------------------------}
procedure glDraw();
var I, J : Integer;
    C, J1, J2 : glFloat;
begin
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);    // Clear The Screen And The Depth Buffer
  glLoadIdentity();                                       // Reset The View

  glTranslatef(0.0,0.0,-4.2);

  if Manual then
    Angle :=Angle + speed
  else
    Angle :=ElapsedTime/14;

  // setup tunnel coordinates
  for I :=0 to 12 do
  begin
    for J :=0 to 32 do
    begin
      Tunnels[I, J].X :=(3 - J/12)*cos(2*pi/12*I) + 2*sin((Angle+2*j)/29) + cos((Angle+2*j)/13) - 2*sin(Angle/29) - cos(Angle/13);
      Tunnels[I, J].Y :=(3 - J/12)*sin(2*pi/12*I) + 2*cos((Angle+2*j)/33) + sin((Angle+2*j)/17) - 2*cos(Angle/33) - sin(Angle/17);
      Tunnels[I, J].Z :=-J;
    end;
  end;

  // draw tunnel
  For J :=0 to 30 do
  begin
    J1 :=J/32 + Angle*TEXTURE_SPEED;        // precalculate texture v coords for speed
    J2 :=(J+1)/32 + Angle*TEXTURE_SPEED;

    // near the end of the tunnel, fade the effect away
    if J > 24 then
      C :=1.0-(J-24)/10
    else
      C :=1.0;
    glColor3f(C, C, C);

    glBegin(GL_QUADS);
      For I :=0 to 11 do
      begin
        glTexCoord2f((I-3)/12, J1); glVertex3f(Tunnels[ I,   J ].X, Tunnels[ I,   J ].Y, Tunnels[ I,   J ].Z);
        glTexCoord2f((I-2)/12, J1); glVertex3f(Tunnels[I+1,  J ].X, Tunnels[I+1,  J ].Y, Tunnels[I+1,  J ].Z);
        glTexCoord2f((I-2)/12, J2); glVertex3f(Tunnels[I+1, J+1].X, Tunnels[I+1, J+1].Y, Tunnels[I+1, J+1].Z);
        glTexCoord2f((I-3)/12, J2); glVertex3f(Tunnels[ I,  J+1].X, Tunnels[ I,  J+1].Y, Tunnels[ I,  J+1].Z);
      end;
    glEnd();
  end;
end;


{------------------------------------------------------------------}
{  Initialise OpenGL                                               }
{------------------------------------------------------------------}
procedure glInit();
begin
  glClearColor(0.0, 0.0, 0.0, 0.0); 	   // Black Background
  glShadeModel(GL_SMOOTH);                 // Enables Smooth Color Shading
  glClearDepth(1.0);                       // Depth Buffer Setup
  glEnable(GL_DEPTH_TEST);                 // Enable Depth Buffer
  glDepthFunc(GL_LESS);		           // The Type Of Depth Test To Do

  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);   //Realy Nice perspective calculations

  glEnable(GL_TEXTURE_2D);                     // Enable Texture Mapping
  LoadTexture('tunnel.bmp', TunnelTex);

  Speed :=0;
  Angle :=0;
  Manual :=FALSE;
end;


{------------------------------------------------------------------}
{  Handle window resize                                            }
{------------------------------------------------------------------}
procedure glResizeWnd(Width, Height : Integer);
begin
  if (Height = 0) then                // prevent divide by zero exception
    Height := 1;
  glViewport(0, 0, Width, Height);    // Set the viewport for the OpenGL window
  glMatrixMode(GL_PROJECTION);        // Change Matrix Mode to Projection
  glLoadIdentity();                   // Reset View
  gluPerspective(45.0, Width/Height, 1.0, 100.0);  // Do the perspective calculations. Last value = max clipping depth

  glMatrixMode(GL_MODELVIEW);         // Return to the modelview matrix
  glLoadIdentity();                   // Reset View
end;


{------------------------------------------------------------------}
{  Processes all the keystrokes                                    }
{------------------------------------------------------------------}
procedure ProcessKeys;
begin
  if (keys[VK_UP])    then
  begin
    if Manual =FALSE then
    begin
      Manual :=TRUE;
      speed := 0.5;
    end
    else
      Speed :=Speed + 0.005;
  end;

  if (keys[VK_DOWN])  then
  begin
    if Manual =FALSE then
    begin
      Manual :=TRUE;
      speed := 0.5;
    end
    else
      Speed :=Speed - 0.005;
  end
end;


{------------------------------------------------------------------}
{  Determines the application抯 response to the messages received  }
{------------------------------------------------------------------}
function WndProc(hWnd: HWND; Msg: UINT;  wParam: WPARAM;  lParam: LPARAM): LRESULT; stdcall;
begin
  case (Msg) of
    WM_CREATE:
      begin
        // Insert stuff you want executed when the program starts
      end;
    WM_CLOSE:
      begin
        PostQuitMessage(0);
        Result := 0
      end;
    WM_KEYDOWN:       // Set the pressed key (wparam) to equal true so we can check if its pressed
      begin
        keys[wParam] := True;
        Result := 0;
      end;
    WM_KEYUP:         // Set the released key (wparam) to equal false so we can check if its pressed
      begin
        keys[wParam] := False;
        Result := 0;
      end;
    WM_SIZE:          // Resize the window with the new width and height
      begin
        glResizeWnd(LOWORD(lParam),HIWORD(lParam));
        Result := 0;
      end;
    WM_TIMER :                     // Add code here for all timers to be used.
      begin
        if wParam = FPS_TIMER then
        begin
          FPSCount :=Round(FPSCount * 1000/FPS_INTERVAL);   // calculate to get per Second incase intercal is less or greater than 1 second
          SetWindowText(h_Wnd, PChar(WND_TITLE + '   [' + intToStr(FPSCount) + ' FPS]'));
          FPSCount := 0;
          Result := 0;
        end;
      end;
    else
      Result := DefWindowProc(hWnd, Msg, wParam, lParam);    // Default result if nothing happens
  end;
end;


{---------------------------------------------------------------------}
{  Properly destroys the window created at startup (no memory leaks)  }
{---------------------------------------------------------------------}
procedure glKillWnd(Fullscreen : Boolean);
begin
  if Fullscreen then             // Change back to non fullscreen
  begin
    ChangeDisplaySettings(devmode(nil^), 0);
    ShowCursor(True);
  end;

  // Makes current rendering context not current, and releases the device
  // context that is used by the rendering context.
  if (not wglMakeCurrent(h_DC, 0)) then
    MessageBox(0, 'Release of DC and RC failed!', 'Error', MB_OK or MB_ICONERROR);

  // Attempts to delete the rendering context
  if (not wglDeleteContext(h_RC)) then
  begin
    MessageBox(0, 'Release of rendering context failed!', 'Error', MB_OK or MB_ICONERROR);
    h_RC := 0;
  end;

  // Attemps to release the device context
  if ((h_DC = 1) and (ReleaseDC(h_Wnd, h_DC) <> 0)) then
  begin
    MessageBox(0, 'Release of device context failed!', 'Error', MB_OK or MB_ICONERROR);
    h_DC := 0;
  end;

  // Attempts to destroy the window
  if ((h_Wnd <> 0) and (not DestroyWindow(h_Wnd))) then
  begin
    MessageBox(0, 'Unable to destroy window!', 'Error', MB_OK or MB_ICONERROR);
    h_Wnd := 0;
  end;

  // Attempts to unregister the window class
  if (not UnRegisterClass('OpenGL', hInstance)) then

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区在线免费观看| 色中色一区二区| 色哟哟精品一区| 精品国产精品网麻豆系列| 亚洲精品五月天| 国产精品1区2区| 在线不卡的av| 亚洲最色的网站| 不卡大黄网站免费看| 精品国产不卡一区二区三区| 亚洲国产精品一区二区尤物区| 国产91色综合久久免费分享| 日韩免费性生活视频播放| 亚洲午夜在线电影| 波多野洁衣一区| 国产午夜精品在线观看| 美女mm1313爽爽久久久蜜臀| 欧美日韩国产综合视频在线观看 | 国产精品乡下勾搭老头1| 777色狠狠一区二区三区| 亚洲伦理在线精品| 99久久久久久99| 中文一区在线播放| 成人午夜电影网站| 久久婷婷国产综合国色天香 | 国产jizzjizz一区二区| 欧美精品一卡二卡| 亚洲影视在线观看| 在线观看国产精品网站| 亚洲综合一区二区| 欧美日韩国产一区| 天天做天天摸天天爽国产一区| 欧美四级电影网| 午夜精品福利久久久| 91精品国产色综合久久不卡电影| 日日骚欧美日韩| 欧美一区二区三区视频| 美女脱光内衣内裤视频久久影院| 91精品国产色综合久久ai换脸| 日韩国产欧美在线播放| 欧美成人精精品一区二区频| 久久精品99国产精品| 久久综合九色综合97婷婷| 国产在线一区观看| 国产精品网曝门| 一本一本大道香蕉久在线精品| 亚洲一线二线三线视频| 91精品国产综合久久久蜜臀图片| 日本亚洲视频在线| 国产亚洲午夜高清国产拍精品| 国产成人亚洲精品狼色在线 | 久久日韩精品一区二区五区| 国产美女视频91| 日韩一区中文字幕| 欧美日韩视频专区在线播放| 美女视频免费一区| 国产精品久久久久久久久搜平片| 91香蕉国产在线观看软件| 樱桃国产成人精品视频| 欧美日韩一卡二卡三卡| 国产乱码精品一品二品| 亚洲欧美日韩综合aⅴ视频| 欧美日韩电影在线播放| 国产一区二区三区不卡在线观看| 亚洲欧美色一区| 日韩欧美国产麻豆| av色综合久久天堂av综合| 天天影视涩香欲综合网| 中文成人av在线| 欧美妇女性影城| 国产91丝袜在线播放九色| 午夜视频在线观看一区二区| 国产欧美久久久精品影院| 欧美精品三级在线观看| 国产成人h网站| 亚洲不卡av一区二区三区| 国产日韩精品视频一区| 欧美理论在线播放| 欧美色大人视频| 99精品久久久久久| 制服丝袜成人动漫| 风间由美性色一区二区三区| 日韩精品电影在线观看| 国产精品久久看| 欧美成人官网二区| 欧美三级欧美一级| 99麻豆久久久国产精品免费 | 国产呦萝稀缺另类资源| 尤物视频一区二区| 国产精品国产三级国产aⅴ无密码| 欧美欧美午夜aⅴ在线观看| 成人精品国产福利| 国产美女精品人人做人人爽| 日本少妇一区二区| 午夜精品久久久久久久久| 麻豆高清免费国产一区| 美女视频一区在线观看| 中文字幕制服丝袜一区二区三区 | 高清av一区二区| 麻豆精品一区二区av白丝在线| 最新国产の精品合集bt伙计| 久久九九99视频| 欧美不卡视频一区| 3d成人动漫网站| 欧美日韩一卡二卡三卡| 欧美午夜精品久久久久久孕妇 | 国产精品麻豆欧美日韩ww| 久久综合丝袜日本网| 日韩一区二区三区电影在线观看 | 国产在线播精品第三| 蜜臀久久99精品久久久画质超高清 | 91麻豆自制传媒国产之光| 成人开心网精品视频| 国产福利精品导航| 国产一区二区三区免费| 国产盗摄精品一区二区三区在线| 久久精品国产99| 国产激情一区二区三区| 高清国产一区二区| 成人黄色网址在线观看| 成人18视频在线播放| 91蜜桃网址入口| 欧美主播一区二区三区| 欧美久久一区二区| 欧美一区二区三区四区视频| 日韩三区在线观看| 国产片一区二区三区| 国产精品嫩草99a| 亚洲精品日日夜夜| 亚洲国产精品一区二区久久| 亚洲成av人片在线观看无码| 麻豆国产欧美日韩综合精品二区 | 另类人妖一区二区av| 国产老肥熟一区二区三区| 成人免费电影视频| 91传媒视频在线播放| 日韩亚洲欧美综合| 欧美国产日韩一二三区| 一区二区三区日韩| 丝袜美腿亚洲色图| 久久99精品久久久久久久久久久久| 国产一区欧美二区| 91尤物视频在线观看| 欧美美女激情18p| 26uuu色噜噜精品一区| 成人欧美一区二区三区在线播放| 亚洲图片欧美综合| 国产精品一区在线观看乱码| 91丨国产丨九色丨pron| 在线播放中文一区| 中文字幕一区二区三区在线观看| 亚洲成人精品在线观看| 国产精品一二一区| 欧美午夜在线观看| 久久久精品免费观看| 亚洲一区免费视频| 国产jizzjizz一区二区| 欧美老肥妇做.爰bbww| 国产精品日日摸夜夜摸av| 天天综合色天天综合| 99精品视频在线免费观看| 在线播放国产精品二区一二区四区 | 一区二区在线电影| 韩国理伦片一区二区三区在线播放| av网站一区二区三区| 精品国产乱码久久久久久久| 亚洲欧美二区三区| 国产成人精品一区二区三区四区| 欧美午夜寂寞影院| 国产精品久久久久久久久图文区| 美美哒免费高清在线观看视频一区二区| 91免费版在线看| 欧美激情中文不卡| 黄色资源网久久资源365| 91麻豆精东视频| 欧美国产精品一区二区| 国内精品嫩模私拍在线| 欧美性xxxxx极品少妇| 亚洲人妖av一区二区| 国产精品456| 精品国产成人系列| 蜜桃视频在线观看一区二区| 欧美三区在线观看| 一区二区三区在线视频免费| 成人av在线看| 国产亚洲精品中文字幕| 国产在线看一区| 精品剧情在线观看| 毛片av中文字幕一区二区| 91精品在线观看入口| 亚洲午夜久久久| 欧美自拍偷拍午夜视频| 亚洲自拍另类综合| 欧美在线免费播放| 亚洲黄色性网站| 在线看国产一区二区| 一区二区日韩电影| 欧美性猛交xxxxxx富婆| 亚洲午夜私人影院| 欧美日韩国产经典色站一区二区三区 |