当前位置:网站首页>Opengl模拟现实生活中,球掉到地面上再弹起来的过程,在屏幕上绘制一个球,球从上往下掉,碰到地面,再弹起来。
Opengl模拟现实生活中,球掉到地面上再弹起来的过程,在屏幕上绘制一个球,球从上往下掉,碰到地面,再弹起来。
2022-07-24 05:16:00 【陌小呆^O^】
//模拟现实生活中,球掉到地面上再弹起来的过程,在屏幕上绘制一个球,球从上往下掉,碰到地面,再弹起来。
#define GLUT_DISABLE_ATEXIT_HACK
#include <gl/glut.h>
float y=1.5f;
float dy=-0.4f;
//初始化OpenGL
void DrawCube()
{
//设置清屏颜色为黑色
glClearColor(0.0f,0.0f,0.0f,0.0f);
//清除颜色缓冲区和深度缓冲区
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0.0f,y,0.0f);
glColor3f(1.0f,0.5f,0.5f);
glutSolidSphere(1.0,50,10);
glPopMatrix();
}
void init(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
glClearDepth(1.0f);
glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_FLAT);
}
//主要的绘制过程
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);//清除颜色缓存
glLoadIdentity();
glTranslatef(0,0,-5);
glColor3f(1.0,0,0);
DrawCube();
glFlush();
}
//在窗口改变大小时调用
void reshape(int w, int h){
glViewport(0, 0, w, h);//设置视口
glMatrixMode(GL_PROJECTION);//设置当前为投影变换模式
glLoadIdentity();//用单位矩阵替换当前变换矩阵
gluPerspective(100, (float)w/h, 3, 100.0);//设置正交投影视图体
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
}
void TimerFunction(int value)
{
y+=dy;
if(y<=-2||y>=3.5)
dy=-dy;
glutTimerFunc(100,TimerFunction, 1);
// Redraw the scene with new coordinates
glutPostRedisplay();
}
void main( )
{
glutCreateWindow("2");//设置窗口标题
init();//初始化OpenGL
glutDisplayFunc(display);//设置显示回调函数
glutReshapeFunc(reshape);//设置reshape回调函数
glutTimerFunc(100,TimerFunction, 1);
glutMainLoop();//进入主循环
}
边栏推荐
猜你喜欢
随机推荐
Solutions to MySQL remote connection errors
九大排序实现与比较(万字总结)
/etc/rc.local 设置UI程序开机自启动
C语言入门篇 概述
关于numpy基础用法的一个整理
【常用技巧】
C语言进阶篇 一.数据的存储
设计一个函数print打印字符串,如果只传string型参数s,则字符串长度跟10比较,大于10,打印前10个字符,小于10,全部输出s;如果传string型参数s和int型n,则字符串长度跟n比
T 1-5
Jsp+dao integration
用双向链表实现栈(C)
泛型和注解
MySQL深入了解
Detailed explanation of string constant pool and intern() of string
深度剖析数据在内存中的存储
SSM整合
web开发
Read the summary of "machine learning - Zhou Zhihua"
C#表格数据去重
C语言进阶篇 六.文件的操作









