📄 gxb_3041222098view.cpp
字号:
// 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 + -