• 大小: 566KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-08
  • 语言: 其他
  • 标签: Viusal  C++  

资源简介

功能说明: (1)绘制球体线框模型的透视投影图,使用背面剔除算法实现动态消隐; (2)通过右键菜单显示消隐效果,右键菜单有两个选项:未消隐与消隐; (3)使用键盘的上下左右控制键旋转消隐前后的球体; (4)单击左键增加视距,右击缩短视距;

资源截图

代码片段和文件信息

#include 
#include 
#define NO_XIAOYIN 1
#define XIAOYIN 2

static float a=1.0fb=0.0fc=0.0f;
GLfloat   rtrir=1.0f;//旋转角度
bool bXiaoyin = true;
void init(void) 
{
       glClearColor(0.0f 0.0f 0.0f 0.0f);//背景色
       glShadeModel(GL_SMOOTH);//设为smooth处理方式
       glEnable(GL_DEPTH_TEST);//激活深度测试
}
 
void display(void)
{
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    //清除颜色缓存和深度缓存
       glLoadIdentity();
       glTranslatef(-1.0f0.0f-4.0f);//控制球的位置和大小
       glRotatef(rtriabc);//旋转
   glColor3f(0.0f1.0f0.0f);//控制球的颜色

   if(bXiaoyin)
          glutWireSphere(r4530 ) ; //初始化线框球 球体围绕z轴分割45次球体沿着z轴分割30次
       else
   {
glDisable(GL_TEXTURE_2D);
    glColorMask(0000);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);
    glPolygonMode(GL_FRONT_AND_BACK GL_FILL);
    glPolygonOffset(1.1f 4.0f);
    glEnable (GL_POLYGON_OFFSET_FILL);  
    //auxSolidSphere(1.0);
    glutSolidSphere  (r 45 30  ) ;//实心球
    glDisable (GL_POLYGON_OFFSET_FILL);
    glColorMask(1 1 1 1);
    glPolygonMode (GL_FRONT_AND_BACK GL_LINE);
  
    //auxSolidSphere(1.0);

   glutSolidSphere  (r4530) ;   
   }
       
       glutSwapBuffers();//交换双缓存
}
 
 
void reshape (int width int height)//对屏幕窗口的形状进行调整
{
       glViewport(0 0 width height); 
       glMatrixMode(GL_PROJECTION);
       glLoadIdentity();
       gluPerspective(45.0f (GLfloat)width/(GLfloat)height 0.1f 100.0f);
       glMatrixMode(GL_MODELVIEW);
       glLoadIdentity();
}
void processMenuEvents(int option)//此函数处理根据菜单选项来执行的动作
{
switch (option) {
case 1:
bXiaoyin = true;
glutPostRedisplay();
break;

case 2:
bXiaoyin = false;
glutPostRedisplay();
break;
    default:
        break;

}
}

void createGLUTMenus()//创建菜单
{
int menu;
menu = glutCreateMenu(processMenuEvents);
glutAddMenuEntry(“消隐“XIAOYIN);//在菜单中添加选项
glutAddMenuEntry(“未消隐“NO_XIAOYIN);
glutAttachMenu(GLUT_RIGHT_BUTTON);


}

 
void keyboard(unsigned char key int x int y)  //键盘控制球体的缩放
{
       switch (key)
       {
  case ‘o‘:
     r+=0.1f;
                     glutPostRedisplay();
                     break;
  case ‘i‘:
     r-=0.1f;
                     glutPostRedisplay();
                     break;

          case ‘x‘:
                     exit(0);
                     break;
              default:
                     break;
   }
}

void keyboard1(int keyint xint y)
{
    switch(key)
{

    case GLUT_KEY_LEFT://向左旋转
a=0.0f;
b=1.0f;
c=0.0f;
            rtri-=2.0f;//减一个角度
            glutPostRedisplay();//重画
            break;
case GLUT_KEY_RIGHT://向右旋转
a=0.0f;
b=1.0f;
c=0.0f;
            rtri+=2.0f;//加一个角度
            glutPostRedisplay();//重画
            break;
case GLUT_KEY_UP://向上旋转
a=1.0f;
b=0.0f;
c=0.0f;
            rtri-=2.0f;
            glutPostRedisplay();
      

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     169984  1998-08-18 16:25  J07-01-03-王攀\GLUT\glut.dll

     文件      21440  1998-08-18 16:24  J07-01-03-王攀\GLUT\glut.h

     文件      79654  1998-08-18 16:25  J07-01-03-王攀\GLUT\glut.lib

     文件     169984  1998-08-18 16:25  J07-01-03-王攀\GLUT\glut32.dll

     文件      79898  1998-08-18 16:25  J07-01-03-王攀\GLUT\glut32.lib

     文件      99328  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\Debug\vc60.idb

     文件      53248  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\Debug\vc60.pdb

     文件     245056  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\Debug\球体消隐.ilk

     文件     188530  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\Debug\球体消隐.exe

     文件     459776  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\Debug\球体消隐.pdb

     文件      24922  2010-06-25 16:58  J07-01-03-王攀\球体背面消隐\Debug\0.obj

     文件     332160  2010-06-27 22:17  J07-01-03-王攀\球体背面消隐\Debug\球体消隐.pch

     文件      12799  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\Debug\球体消隐.obj

     文件      50176  2010-06-30 12:40  J07-01-03-王攀\球体背面消隐\球体消隐.ncb

     文件        756  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\球体消隐.plg

     文件        345  2010-06-25 16:52  J07-01-03-王攀\球体背面消隐\球体消隐.sln

    ..A..H.      6656  2010-06-25 16:52  J07-01-03-王攀\球体背面消隐\球体消隐.suo

     文件       3427  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\球体消隐.dsp

     文件       4429  2010-06-30 12:25  J07-01-03-王攀\球体背面消隐\球体消隐.cpp

     文件      48640  2010-06-30 12:40  J07-01-03-王攀\球体背面消隐\球体消隐.opt

     文件        524  2010-06-30 12:40  J07-01-03-王攀\球体背面消隐\球体消隐.dsw

     文件     259584  2011-04-18 22:08  J07-01-03-王攀\球体消隐课程设计报告.doc

     目录          0  2010-06-27 00:41  J07-01-03-王攀\球体背面消隐\Debug

     目录          0  2010-06-27 00:41  J07-01-03-王攀\GLUT

     目录          0  2010-06-27 00:41  J07-01-03-王攀\球体背面消隐

     目录          0  2010-06-27 00:41  J07-01-03-王攀

----------- ---------  ---------- -----  ----

              2311316                    26


评论

共有 条评论