⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gxb_3041222098view.cpp

📁 zuoye j kjaflk jlka jlk j
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// TODO: Add your command handler code here
	abc=1;
	DrawScene();
}

void CGxb_3041222098View::chahu()
{
  GLfloat position0[]={0.0,1.0,0.0,0.0};
	  GLfloat diffuse0[]={1.0,0.0,0.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);

	  glutSolidTeapot(1.0);
}

void CGxb_3041222098View::chahu1()
{
  GLfloat position0[]={0,1.0,0.0,1.0};
	  GLfloat diffuse0[]={1.0,0.0,0.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);
	  glutSolidTeapot(1.0);
}

//void CGxb_3041222098View::chahu2()
//
//}

void CGxb_3041222098View::chahu3()
{
   GLfloat position0[]={0,1.0,0.0,1.0};
	  GLfloat diffuse0[]={1.0,0.0,0.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);

	  glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION,2.0);
      glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION,1.0);
	  glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION,0.5);
	  glutSolidTeapot(1.0);
}

void CGxb_3041222098View::chahu4()
{
   GLfloat position0[]={0.0,1.0,0.0,1.0};
	  GLfloat diffuse0[]={1.0,0.0,0.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);

	  GLfloat spot_direction0[] = {0.0,-1.0,0.0};
	  glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,spot_direction0);
	  glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,45.0);
	  glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,2.0);
	  glutSolidTeapot(1.0);
}

void CGxb_3041222098View::chahu5()
{
  GLfloat position0[]={0.0,1.0,0.0,1.0};
	  GLfloat diffuse0[]={1.0,0.0,0.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);

	  GLfloat spot_direction0[] = {0.0,-1.0,0.0};
	  glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,spot_direction0);
	  glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,45.0);
	  glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,2.0);

	  GLfloat position1[]={1.0,0.0,0.0,1.0};
	  GLfloat diffuse1[]={0.0,1.0,0.0,1.0};
      GLfloat specular1[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient1[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT1,GL_POSITION,position1);
	  glLightfv(GL_LIGHT1,GL_DIFFUSE,diffuse1);
	  glLightfv(GL_LIGHT1,GL_SPECULAR,specular1);
      glLightfv(GL_LIGHT1,GL_AMBIENT,ambient1); 
      
	  glEnable(GL_LIGHT1);
	  glutSolidTeapot(1.0);
}

void CGxb_3041222098View::chahu6()
{
  GLfloat position0[]={0,1.0,0.0,0.0};
	  GLfloat diffuse0[]={1.0,0.0,0.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);
	  glutSolidTeapot(1.0);
}

void CGxb_3041222098View::chahu7()
{
    GLfloat position0[]={0,1.0,0.0,0.0};
	  GLfloat diffuse0[]={1.0,0.0,0.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);
      
	  GLfloat mat_ambient[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_diffuse[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_specular[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_shininess = 100.0 ;
	  glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mat_ambient);
	  glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mat_diffuse);
	  glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular);
	  glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,mat_shininess);
	  glutSolidTeapot(1.0);

}

void CGxb_3041222098View::chahu8()
{
   GLfloat position0[]={0,1.0,0.0,0.0};
	  GLfloat diffuse0[]={1.0,1.0,1.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);
      
	  GLfloat mat_ambient[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_diffuse[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_specular[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_shininess = 100.0 ;
	  glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mat_ambient);
	  glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mat_diffuse);
	  glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular);
	  glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,mat_shininess);
	  glutSolidTeapot(1.0);
} 

void CGxb_3041222098View::chahu9()
{
   GLfloat position0[]={0,1.0,0.0,0.0};
	  GLfloat diffuse0[]={1.0,1.0,1.0,1.0};
      GLfloat specular0[]={1.0,1.0,1.0,1.0};
	  GLfloat ambient0[]={0.1,0.1,0.1,1.0};
	  glLightfv(GL_LIGHT0,GL_POSITION,position0);
	  glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse0);
	  glLightfv(GL_LIGHT0,GL_SPECULAR,specular0);
      glLightfv(GL_LIGHT0,GL_AMBIENT,ambient0);
      
	  GLfloat mat_ambient[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_diffuse[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_specular[]={1.0,1.0,1.0,1.0};
	  GLfloat mat_shininess = 100.0 ;
	  glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mat_ambient);
	  glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mat_diffuse);
	  glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular);
	  glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,mat_shininess);
	  glutSolidTeapot(1.0);
}

void CGxb_3041222098View::DrawQuad(int a, int b, int c, int d)
{
  glBegin(GL_QUADS);
     glColor3fv(m_colors[a]);
	 glTexCoord2f(0.0,0.0);
	 glVertex3fv(m_vertices[a]);
	 glColor3fv(m_colors[b]);
	 glTexCoord2f(0.0,1.0);
	 glVertex3fv(m_vertices[b]);
	 glColor3fv(m_colors[c]);
	 glTexCoord2f(1.0,1.0);
	 glVertex3fv(m_vertices[c]);
	 glColor3fv(m_colors[d]);
	 glTexCoord2f(1.0,0.0);
	 glVertex3fv(m_vertices[d]); 
 glEnd();

}

void CGxb_3041222098View::DrawScene()
{
  glEnable(GL_DEPTH_TEST);
  glClearColor(1.0f,1.0f,1.0f,1.0f);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glColor3f(1.0f,0.0f,0.0f);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  gluLookAt(viewer[0],viewer[1],viewer[2],0.0,0.0,0.0,
	                                       0.0,1.0,0.0);

  glRotatef(30.0f,1.0f,0.0f,0.0f);
  glRotatef(-135.0f,0.0f,1.0f,0.0f);

  
  
  glRotatef(m_theta[0],1.0f,0.0f,0.0f);
  glRotatef(m_theta[1],0.0f,1.0f,0.0f);
  glRotatef(m_theta[2],0.0f,0.0f,1.0f);
 
  //glPushMatrix();

  switch(abc){
  case 1:
	  glEnable(GL_TEXTURE_2D);
      LoadTexture();
	  glDisable(GL_LIGHTING);
	  zft();
   break; 
  case 2:
	  glEnable(GL_LIGHTING);
	  glEnable(GL_LIGHT0);
	 glDisable(GL_TEXTURE_2D);
    
	  glutSolidTeapot(1.0);
	  chahu();
   break;
   case 3:
	 glEnable(GL_LIGHTING);
	  glEnable(GL_LIGHT0);
	  glDisable(GL_TEXTURE_2D);
	  chahu1();
   break;
  case 4:
	  glEnable(GL_LIGHTING);
	  glEnable(GL_LIGHT0);
	 glDisable(GL_TEXTURE_2D);
	  chahu3();
   break;
  case 5:
	 glEnable(GL_LIGHTING);
	  glEnable(GL_LIGHT0);
	  glDisable(GL_TEXTURE_2D);
	  chahu4();
   break;
  case 6:
	  glEnable(GL_LIGHTING);
	  glEnable(GL_LIGHT0);
	  glDisable(GL_TEXTURE_2D);
	  chahu5();
	  glDisable(GL_LIGHT1);
   break;
   case 7:
	  glPushMatrix();
	 glEnable(GL_LIGHTING);
	 glEnable(GL_LIGHT0);
	 glDisable(GL_TEXTURE_2D);
	  glPopMatrix();
	  chahu6();
   break;
  case 8:
	  glEnable(GL_LIGHTING);
	  glEnable(GL_LIGHT0);
	  glDisable(GL_TEXTURE_2D);
	  chahu7();
   break;
   case 9:
	  glEnable(GL_LIGHTING);
	  glEnable(GL_LIGHT0);
     glDisable(GL_TEXTURE_2D);
	chahu8();
   break;
     case 10:
	 // glEnable(GL_LIGHTING);
	 // glEnable(GL_LIGHT0);
     glDisable(GL_TEXTURE_2D);
	chahu9();
   break;
  }
  glFinish();
  SwapBuffers(wglGetCurrentDC());
  glFlush();


}

void CGxb_3041222098View::LoadTexture()
{
  for(register int i=0;i<64;i++)
 {
    for(register int j=0;j<64;j++)
	{
	 int c=(((i & 0x8)==0)^((j & 0x8)==0)) *255;
	 m_image[i][j][0]=(GLubyte) c;
	 m_image[i][j][1]=(GLubyte) c;
	 m_image[i][j][2]=(GLubyte) c;
	}
 }
 glTexImage2D(GL_TEXTURE_2D,0,3,64,64,0,GL_RGB,GL_UNSIGNED_BYTE,m_image);
 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
 glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
}

BOOL CGxb_3041222098View::SetupPixelFormat(PIXELFORMATDESCRIPTOR *pPFD)
{
   PIXELFORMATDESCRIPTOR pfd = {
		sizeof( PIXELFORMATDESCRIPTOR ),
		1,
		PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
		//PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL,
		PFD_TYPE_RGBA,
		24,
		0, 0, 0, 0, 0, 0,
		0, 0, 0, 
		0, 0, 0, 0, 
		16,
		0, 0, 
		PFD_MAIN_PLANE,
		0, 0, 0, 0 };

	int pixelformat;
	
	PIXELFORMATDESCRIPTOR* pPFDtoUse;

	pPFDtoUse = (0 == pPFD)? &pfd : pPFD;
	
	if ( 0 == ( pixelformat = ::ChoosePixelFormat( m_pDC->GetSafeHdc(), pPFDtoUse ) ) ) 
	{
		::AfxMessageBox( "ChoosePixelFormat failed" );
		return FALSE;
	}

	if ( FALSE == ::SetPixelFormat( m_pDC->GetSafeHdc(), pixelformat, pPFDtoUse ) ) 
	{
		::AfxMessageBox( "SetPixelFormat failed" );
		return FALSE;
	}

	return TRUE;
}

void CGxb_3041222098View::zft()
{
   DrawQuad(0,3,2,1);
  DrawQuad(2,3,7,6);
  DrawQuad(3,0,4,7);
  DrawQuad(1,2,6,5);
  DrawQuad(4,5,6,7);
  DrawQuad(5,4,0,1);
}

⌨️ 快捷键说明

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