project2.dpr

来自「Delphi7编程80例(完全版)」· DPR 代码 · 共 594 行 · 第 1/2 页

DPR
594
字号
    glVertex3f(0.472351, 0.0888977, 0.352966);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.877521, 0.357037, 0.320127);
    glVertex3f(0.408844, 0.328003, 0.260376);
    glVertex3f(0.472351, 0.0888977, 0.352966);
    glVertex3f(0.533997, 0.20929, 0.0497131);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.999592, -0.0112823, -0.0262407);
    glVertex3f(0.525299, -0.042511, -0.17334);
    glVertex3f(0.533997, 0.20929, 0.0497131);
    glVertex3f(0.531952, -0.152008, 0.127167);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.764909, -0.303992, -0.567894);
    glVertex3f(0.282532, -0.491699, -0.285278);
    glVertex3f(0.191071, -0.337128, -0.491211);
    glVertex3f(0.471161, -0.290833, -0.138733);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.774426, -0.249842, -0.581243);
    glVertex3f(0.525299, -0.042511, -0.17334);
    glVertex3f(0.471161, -0.290833, -0.138733);
    glVertex3f(0.312347, 0, -0.475342 );
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.312115, -0.0676723, -0.947631);
    glVertex3f(0.00231934, 0, -0.577454 );
    glVertex3f(0.312347, 0, -0.475342 );
    glVertex3f(0.191071, -0.337128, -0.491211);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.197739, -0.72867, 0.655698);
    glVertex3f(0.00344849, -0.631836, 0.247131);
    glVertex3f(0.253418, -0.528687, 0.286377);
    glVertex3f(-0.0487366, -0.464478, 0.448853);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.211591, -0.413455, 0.885598);
    glVertex3f(0.473358, -0.170807, 0.400909);
    glVertex3f(0.212646, -0.201538, 0.448853);
    glVertex3f(0.253418, -0.528687, 0.286377);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.108039, -0.107399, 0.988328);
    glVertex3f(-0.0549011, 0, 0.5 );
    glVertex3f(-0.0487366, -0.464478, 0.448853);
    glVertex3f(0.212646, -0.201538, 0.448853);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.942466, 0.202839, -0.265731);
    glVertex3f(0.525299, -0.042511, -0.17334);
    glVertex3f(0.425964, 0.25, -0.302368);
    glVertex3f(0.533997, 0.20929, 0.0497131);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.540665, 0.809814, -0.227778);
    glVertex3f(0.170563, 0.425323, -0.285278);
    glVertex3f(0.306183, 0.404633, -0.0369263);
    glVertex3f(0.425964, 0.25, -0.302368);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.657824, 0.75244, -0.0332111);
    glVertex3f(0.408844, 0.328003, 0.260376);
    glVertex3f(0.533997, 0.20929, 0.0497131);
    glVertex3f(0.306183, 0.404633, -0.0369263);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.467657, 0.881464, 0.0657114);
    glVertex3f(0.408844, 0.328003, 0.260376);
    glVertex3f(0.306183, 0.404633, -0.0369263);
    glVertex3f(0.131439, 0.474701, 0.266785);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.036579, 0.998664, 0.036503);
    glVertex3f(-0.138153, 0.486145, 0.223846);
    glVertex3f(0.131439, 0.474701, 0.266785);
    glVertex3f(0.0134583, 0.491821, -0.083374);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.296505, 0.951448, -0.0826477);
    glVertex3f(0.170563, 0.425323, -0.285278);
    glVertex3f(0.0134583, 0.491821, -0.083374);
    glVertex3f(0.306183, 0.404633, -0.0369263);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.818651, 0.0249238, -0.57375);
    glVertex3f(0.525299, -0.042511, -0.17334);
    glVertex3f(0.312347, 0, -0.475342 );
    glVertex3f(0.425964, 0.25, -0.302368);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.407482, 0.655568, -0.635759);
    glVertex3f(0.170563, 0.425323, -0.285278);
    glVertex3f(0.425964, 0.25, -0.302368);
    glVertex3f(0.131378, 0.249969, -0.491211);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.3086, 0.163933, -0.936959);
    glVertex3f(0.00231934, 0, -0.577454 );
    glVertex3f(0.131378, 0.249969, -0.491211);
    glVertex3f(0.312347, 0, -0.475342 );
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.157363, 0.179867, 0.971022);
    glVertex3f(0.473358, -0.170807, 0.400909);
    glVertex3f(0.472351, 0.0888977, 0.352966);
    glVertex3f(0.212646, -0.201538, 0.448853);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.618173, 0.421188, 0.663674);
    glVertex3f(0.408844, 0.328003, 0.260376);
    glVertex3f(0.212646, 0.267761, 0.481354);
    glVertex3f(0.472351, 0.0888977, 0.352966);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.137357, -0.0684344, 0.988155);
    glVertex3f(-0.0549011, 0, 0.5 );
    glVertex3f(0.212646, -0.201538, 0.448853);
    glVertex3f(0.212646, 0.267761, 0.481354);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.898457, -0.367331, -0.240507);
    glVertex3f(-0.361786, -0.280945, -0.0588074);
    glVertex3f(-0.475525, -0.142578, 0.154755);
    glVertex3f(-0.425293, -0.0452881, -0.181488);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.990518, 0.0293809, 0.134204);
    glVertex3f(-0.447205, 0.0761719, 0.315887);
    glVertex3f(-0.475525, 0.224731, 0.0743408);
    glVertex3f(-0.475525, -0.142578, 0.154755);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.930333, 0.145751, -0.336506);
    glVertex3f(-0.361786, 0.262848, -0.223602);
    glVertex3f(-0.425293, -0.0452881, -0.181488);
    glVertex3f(-0.475525, 0.224731, 0.0743408);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.0915225, 0.922481, -0.375037);
    glVertex3f(0.170563, 0.425323, -0.285278);
    glVertex3f(-0.131439, 0.40448, -0.262848);
    glVertex3f(0.0134583, 0.491821, -0.083374);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.533345, 0.770975, -0.348053);
    glVertex3f(-0.361786, 0.262848, -0.223602);
    glVertex3f(-0.293854, 0.415649, 0.0107727);
    glVertex3f(-0.131439, 0.40448, -0.262848);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.272513, 0.955032, -0.116838);
    glVertex3f(-0.138153, 0.486145, 0.223846);
    glVertex3f(0.0134583, 0.491821, -0.083374);
    glVertex3f(-0.293854, 0.415649, 0.0107727);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.863373, 0.378291, 0.333889);
    glVertex3f(-0.447205, 0.0761719, 0.315887);
    glVertex3f(-0.344055, 0.324249, 0.301544);
    glVertex3f(-0.475525, 0.224731, 0.0743408);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.574288, 0.804112, 0.153612);
    glVertex3f(-0.138153, 0.486145, 0.223846);
    glVertex3f(-0.293854, 0.415649, 0.0107727);
    glVertex3f(-0.344055, 0.324249, 0.301544);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.742204, 0.639143, -0.201568);
    glVertex3f(-0.361786, 0.262848, -0.223602);
    glVertex3f(-0.475525, 0.224731, 0.0743408);
    glVertex3f(-0.293854, 0.415649, 0.0107727);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.100014, 0.766867, -0.633966);
    glVertex3f(0.170563, 0.425323, -0.285278);
    glVertex3f(0.131378, 0.249969, -0.491211);
    glVertex3f(-0.131439, 0.40448, -0.262848);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.496295, 0.646655, -0.579248);
    glVertex3f(-0.361786, 0.262848, -0.223602);
    glVertex3f(-0.131439, 0.40448, -0.262848);
    glVertex3f(-0.267548, 0.15448, -0.425323);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.245954, 0.427173, -0.870075);
    glVertex3f(0.00231934, 0, -0.577454 );
    glVertex3f(-0.267548, 0.15448, -0.425323);
    glVertex3f(0.131378, 0.249969, -0.491211);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.838044, -0.412032, -0.357647);
    glVertex3f(-0.361786, -0.280945, -0.0588074);
    glVertex3f(-0.425293, -0.0452881, -0.181488);
    glVertex3f(-0.267548, -0.15448, -0.425323);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.49107, 0, -0.87112 );
    glVertex3f(0.00231934, 0, -0.577454 );
    glVertex3f(-0.267548, -0.15448, -0.425323);
    glVertex3f(-0.267548, 0.15448, -0.425323);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.874574, 0.115899, -0.470838);
    glVertex3f(-0.361786, 0.262848, -0.223602);
    glVertex3f(-0.267548, 0.15448, -0.425323);
    glVertex3f(-0.425293, -0.0452881, -0.181488);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(0.399242, 0.730775, 0.553691);
    glVertex3f(0.408844, 0.328003, 0.260376);
    glVertex3f(0.131439, 0.474701, 0.266785);
    glVertex3f(0.212646, 0.267761, 0.481354);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.0385133, 0.878612, 0.475982);
    glVertex3f(-0.138153, 0.486145, 0.223846);
    glVertex3f(-0.0811768, 0.360779, 0.459869);
    glVertex3f(0.131439, 0.474701, 0.266785);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.0385461, 0.107696, 0.993436);
    glVertex3f(-0.0549011, 0, 0.5 );
    glVertex3f(0.212646, 0.267761, 0.481354);
    glVertex3f(-0.0811768, 0.360779, 0.459869);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.549513, 0.274117, 0.789237);
    glVertex3f(-0.447205, 0.0761719, 0.315887);
    glVertex3f(-0.317749, -0.0470581, 0.448822);
    glVertex3f(-0.344055, 0.324249, 0.301544);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.206353, 0.0933145, 0.974018);
    glVertex3f(-0.0549011, 0, 0.5 );
    glVertex3f(-0.0811768, 0.360779, 0.459869);
    glVertex3f(-0.317749, -0.0470581, 0.448822);
  glEnd;
  glBegin(GL_TRIANGLES);
    glNormal3f(-0.408821, 0.761405, 0.503119);
    glVertex3f(-0.138153, 0.486145, 0.223846);
    glVertex3f(-0.344055, 0.324249, 0.301544);
    glVertex3f(-0.0811768, 0.360779, 0.459869);
  glEnd;

 SwapBuffers(h_DC);                                    // 交换帧缓冲区
 glPopMatrix;                                          // 处理当前矩阵
end;                                                   // 置于先前保存的矩阵之后

// 正式绘制Opengl场景
procedure PrepareScene;
begin
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_CULL_FACE);
  glEnable(GL_NORMALIZE);
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);
  glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
  glMatrixMode(GL_PROJECTION);
  glViewPort(0, 0, PWndWidth, PWndHeight);              // 设置渲染的环境
  gluPerspective(60, 400/300, 1, 100);                  // 设置其余的场景范围
  glMatrixMode(GL_MODELVIEW);
  angle := 0;
end;

begin
  PrepareWindow;
  h_DC := GetDC(hParentWnd);                                       // 从创建的窗口中获得一个句柄
  InitOpenGL;                                                      // 激活动态链接库
  h_RC :=CreateRenderingContext(h_DC, [opDoubleBuffered], 0, 0);  // 设置Opengl的渲染环境
  ActivateRenderingContext(h_DC, h_RC);                            // 激活设备句柄
  PrepareScene;
  ShowWindow(hParentWnd, SW_SHOW);                                 // 使窗口可见
  
  // 下列消息使这个程序循环执行
  repeat
    PeekMessage(iMessage, 0, 0, 0, PM_REMOVE);                     // 解释消息
    TranslateMessage(iMessage);
    DispatchMessage(iMessage);                                     // 给主窗口过程分派消息
    DrawScene;

    
  until (iMessage.message = WM_QUIT);

  // 退出演示后的相关处理
  DeactivateRenderingContext;
  DestroyRenderingContext(h_RC);
  ReleaseDC(hParentWnd, h_DC);
  UnRegisterClass('glClass', hInstance);
  CloseOpenGL;
  DestroyWindow(hParentWnd);
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?