OpenGL绘制的桌子---比较初级

#include <GL/glut.h>
#include <stdlib.h>


float fTranslate;
float fRotate;
float fScale     = 1.0f;	


void Draw_Table() 
{
	glPushMatrix();
		glScalef (5.0, 4.0, 1.0);
		glutWireCube(1.0);
	glPopMatrix();	


	glPushMatrix();	
		glTranslatef(0.0,0.0,-2.0);
		glPushMatrix();	
			glTranslatef(1.5,1.0,0.0);	
			glScalef (1.0, 1.0, 3.0);
			glutWireCube(1.0);
		glPopMatrix();	


		glPushMatrix();	
			glTranslatef(1.5,-1.0,0.0);	
			glScalef (1.0, 1.0, 3.0);
			glutWireCube(1.0);
		glPopMatrix();	


		glPushMatrix();	
			glTranslatef(-1.5,-1.0,0.0);	
			glScalef (1.0, 1.0, 3.0);
			glutWireCube(1.0);
		glPopMatrix();		


		glPushMatrix();	
			glTranslatef(-1.5,1.0,0.0);	
			glScalef (1.0, 1.0, 3.0);
			glutWireCube(1.0);
		glPopMatrix();		
	glPopMatrix();		


}
void reshape(int width, int height)
{
	if (height==0)										
	{
		height=1;										
	}
	glViewport(0,0,width,height);						
	glMatrixMode(GL_PROJECTION);						
	glLoadIdentity();									
	gluPerspective(120.0f,(GLfloat)width/(GLfloat)height,0.1f,20.0f);
	glMatrixMode(GL_MODELVIEW);							
	glLoadIdentity();									
}


void idle()
{
	glutPostRedisplay();
}


void redraw()
{


	glClear(GL_COLOR_BUFFER_BIT);
	glLoadIdentity();									
	
	glPushMatrix();
		glTranslatef(-11.0f, 0.0f,-6.0f);		
		glTranslatef(0.0f, fTranslate, 0.0f);	
		Draw_Table();											
	glPopMatrix();


   	glPushMatrix();
		glTranslatef(0.0f, 0.0f,-6.0f);			
		glRotatef(fRotate, 0, 1.0f, 0);			
		Draw_Table();						
	glPopMatrix();




	glPushMatrix();
		glTranslatef(11.0f,0.0f,-6.0f);			
		glScalef(fScale, fScale, fScale);		
		Draw_Table();											
	glPopMatrix();




	fTranslate += 0.005f;
	fRotate    += 0.5f;
	fScale     -= 0.005f;


	if(fTranslate > 0.5f) fTranslate = 0.0f;
	if(fScale < 0.5f)     fScale     = 1.0f;
	glutSwapBuffers();
}


int main (int argc,  char *argv[])
{
  	glutInit(&argc, argv);
 	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
	glutInitWindowSize(840,480);                                                   
        glutCreateWindow("Simple GLUT App");
	glutDisplayFunc(redraw);
	glutReshapeFunc(reshape);			
	glutIdleFunc(idle);							


  glutMainLoop();


  return 0;
}



#include <GL/glut.h>
#include <stdlib.h>

float fTranslate;
float fRotate;
float fScale     = 1.0f;	

void Draw_Table() 
{
	glPushMatrix();
		glScalef (1.0, 1.0, 0.8);
		glutSolidCube(1.0);
	glPopMatrix();	

	glPushMatrix();	
		glTranslatef(0.0,0.0,-0.8);
		glPushMatrix();
			glScalef (2.0, 2.0, 0.8);
			glutSolidCube(1.0);
		glPopMatrix();
		
		glTranslatef(0.0,0.0,-0.8);
		glPushMatrix();
			glScalef (3.0, 3.0, 0.8);
			glutSolidCube(1.0);
		glPopMatrix();

		glTranslatef(0.0,0.0,-0.8);
		glPushMatrix();
			glScalef (4.0, 4.0, 0.8);
			glutSolidCube(1.0);
		glPopMatrix();

		glTranslatef(0.0,0.0,-0.8);
		glPushMatrix();
			glScalef (5.0, 5.0, 0.8);
			glutSolidCube(1.0);
		glPopMatrix();

		glTranslatef(0.0,0.0,-0.8);
		glPushMatrix();
			glScalef (6.0, 6.0, 0.8);
			glutSolidCube(1.0);
		glPopMatrix();

		glTranslatef(0.0,0.0,-3.0);
		
		glPushMatrix();	
			glTranslatef(2.0,2.0,0.0);	
			GLUquadricObj *cylinder_obj_1;
			cylinder_obj_1=gluNewQuadric();
			glPushMatrix();
				gluCylinder(cylinder_obj_1,0.5,0.5,3.0,20,20);
			glPopMatrix();
		glPopMatrix();	


		glPushMatrix();	
			glTranslatef(-2.0,2.0,0.0);	
			GLUquadricObj *cylinder_obj_2;
			cylinder_obj_2=gluNewQuadric();
			glPushMatrix();
				gluCylinder(cylinder_obj_2,0.5,0.5,3.0,20,20);
			glPopMatrix();
		glPopMatrix();	

		glPushMatrix();	
			glTranslatef(-2.0,-2.0,0.0);	
			GLUquadricObj *cylinder_obj_3;
			cylinder_obj_3=gluNewQuadric();
			glPushMatrix();
				gluCylinder(cylinder_obj_3,0.5,0.5,3.0,20,20);
			glPopMatrix();
		glPopMatrix();	

		glPushMatrix();	
			glTranslatef(2.0,-2.0,0.0);	
			GLUquadricObj *cylinder_obj_4;
			cylinder_obj_4=gluNewQuadric();
			glPushMatrix();
				gluCylinder(cylinder_obj_4,0.5,0.5,3.0,20,20);
			glPopMatrix();
		glPopMatrix();	
				
	glPopMatrix();		

}
void reshape(int width, int height)
{
	if (height==0)										
	{
		height=1;										
	}
	glViewport(0,0,width,height);						
	glMatrixMode(GL_PROJECTION);						
	glLoadIdentity();									
	gluPerspective(120.0f,(GLfloat)width/(GLfloat)height,0.1f,20.0f);
	glMatrixMode(GL_MODELVIEW);							
	glLoadIdentity();									
}

void idle()
{
	glutPostRedisplay();
}

void redraw()
{

	glClear(GL_COLOR_BUFFER_BIT);
	glLoadIdentity();									
	
	glPushMatrix();
		glTranslatef(-11.0f, 0.0f,-6.0f);		
		glTranslatef(0.0f, fTranslate, 0.0f);	
		Draw_Table();											
	glPopMatrix();

   	glPushMatrix();
		glTranslatef(0.0f, 0.0f,-6.0f);			
		glRotatef(fRotate, 0, 1.0f, 0);			
		Draw_Table();						
	glPopMatrix();


	glPushMatrix();
		glTranslatef(11.0f,0.0f,-6.0f);			
		glScalef(fScale, fScale, fScale);		
		Draw_Table();											
	glPopMatrix();


	fTranslate += 0.005f;
	fRotate    += 0.5f;
	fScale     -= 0.005f;

	if(fTranslate > 0.5f) fTranslate = 0.0f;
	if(fScale < 0.5f)     fScale     = 1.0f;
	glutSwapBuffers();
}

int main (int argc,  char *argv[])
{
  	glutInit(&argc, argv);
 	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
	glutInitWindowSize(840,480);                                                   
        glutCreateWindow("Simple GLUT App");
	glutDisplayFunc(redraw);
	glutReshapeFunc(reshape);			
	glutIdleFunc(idle);							

  	glutMainLoop();

  return 0;
}



  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值