#include <GL/glut.h>
#include<GL/GL.h>
#include<GL/glext.h>
#include<GL/GLU.h>
#include<stdio.h>
GLfloat xx=3.0;
GLfloat yy=0.0;
GLfloat zz=0.0;
GLfloat lx=7.0;
GLfloat ly=3.0;
GLfloat lz=5.0;
GLfloat mx=0.0;
GLfloat my=0.0;
GLfloat mz=0.0;
GLfloat dushu=0;
GLfloat matfv []={1,0,0,1};
GLfloat matfv1 []={0.2,0.5,1,1};
GLfloat matSpecularFv []={1,1,1,1};
GLfloat matShininessFv []={50};
GLfloat lifv []={xx,yy,zz,0};
GLfloat rgba []={1,1,1,1};
GLfloat limo []={0.1,0.1,0.1,1};
//GLfloat move[]={1,0,0,0.1, 0,1,0,0, 0,0,1,0, 0,0,0,1};
GLfloat move[]={1,0,0,0, 0,1,0,0, 0,0,1,0, 1,0,0,1};
void init()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glClearColor(0,0,0,0);
}
void myDisplay(void)
{glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glClearColor(0,0,0,0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//glShadeModel(GL_SMOOTH);
glLightfv(GL_LIGHT0,GL_POSITION,lifv);
glLightfv(GL_LIGHT0,GL_DIFFUSE,rgba);
glLightfv(GL_LIGHT0,GL_SPECULAR,rgba);
//glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE,limo);
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
//
gluLookAt(lx,ly,lz, 0,0,0, 0,0,1);
glPushMatrix();
glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,matfv);
glMaterialfv(GL_FRONT,GL_SPECULAR,matSpecularFv);
glMaterialfv(GL_FRONT,GL_SHININESS,matShininessFv);
glBegin(GL_LINES);
glVertex3d(5,0,0);
glVertex3d(-5,0,0);
glVertex3d(0,5,0);
glVertex3d(0,-5,0);
glVertex3d(0,0,5);
glVertex3d(0,0,-5);
glVertex3d(2,0,-3);
glVertex3d(2,0,3);
glEnd();
glutSolidSphere(1,20,16);
glutWireCube(2);
glPopMatrix();
glPushMatrix();
glTranslatef(1,-1.5,1);
glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,matfv);
glMaterialfv(GL_FRONT,GL_SPECULAR,matSpecularFv);
glMaterialfv(GL_FRONT,GL_SHININESS,matShininessFv);
glutSolidSphere(0.5,20,16);
glPopMatrix();
glPushMatrix();
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,matfv1);
glMaterialfv(GL_FRONT,GL_SPECULAR,matSpecularFv);
glMaterialfv(GL_FRONT,GL_SHININESS,matShininessFv);
glBegin(GL_QUADS);
glVertex3d(11,11,-2);
glVertex3d(11,-11,-2);
glVertex3d(-11,-11,-2);
glVertex3d(-11,11,-2);
glEnd();
glBegin(GL_QUADS);
glVertex3d(-3,-11,-2);
glVertex3d(-3,-11,11);
glVertex3d(-3,11,11);
glVertex3d(-3,11,-2);
glEnd();
glPopMatrix();
glPopMatrix();
//glPushMatrix();
glTranslatef(2,0,0);
glMultMatrixf(move);
glRotatef(dushu,0,0,1);
glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,matfv);
glMaterialfv(GL_FRONT,GL_SPECULAR,matSpecularFv);
glMaterialfv(GL_FRONT,GL_SHININESS,matShininessFv);
glBegin(GL_QUADS);
glVertex3d(0,-0.3,0);
glVertex3d(1.8,0,0);
glVertex3d(0,0.3,0);
glVertex3d(0,-0.3 ,0);
glEnd();
dushu=0;
glPushMatrix();
//glPopMatrix();
glFlush();
// glutSwapBuffers();
printf("xx=%f\n",xx);
printf("yy=%f\n",yy);
printf("zz=%f\n",zz);
printf("\n");
}
void myreshape(int w,int h)
{
//
glViewport(0,0,800,500);
//
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70,1,3,15);
//
}
void keyboard( unsigned char key , int x,int y)
{
switch(key)
{
case '1' : xx++;glutPostRedisplay();break;
case '2' : xx--;glutPostRedisplay();break;
case '3' : yy++;glutPostRedisplay();break;
case '4' : yy--;glutPostRedisplay();break;
case '5' : zz++;glutPostRedisplay();break;
case '6' : zz--;glutPostRedisplay();break;
//
case 'w' :glMultMatrixf(move);glutPostRedisplay();break;
case 'a' : my+=0.1;glutPostRedisplay();break;
case 's' : mx--;glutPostRedisplay();break;
case 'd' : my-=0.1;glutPostRedisplay();break;
//
case 'z' : dushu+=10;glutPostRedisplay();break;
case 'x' : dushu-=10;glutPostRedisplay();break;
case 'c' : mx-=0.1;glutPostRedisplay();break;
case 'v' : my-=0.1;glutPostRedisplay();break;
default : break;
}
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 20);
glutInitWindowSize(800, 500);
glutCreateWindow("");
init();
glutReshapeFunc(myreshape);
glutDisplayFunc(myDisplay);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
opengl.rar_OpenGl 透视变换_opengl矩阵_模型变换_透视变换_键盘 opengl
版权申诉
86 浏览量
2022-09-23
12:26:15
上传
评论
收藏 1KB RAR 举报
Kinonoyomeo
- 粉丝: 75
- 资源: 1万+
最新资源
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
- python中matplotlib教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0