资源简介
图形图像课程设计,运用opengl做的时钟,基于WIN32环境。
代码片段和文件信息
#define GLUT_DISABLE_ATEXIT_HACK
#pragma comment(lib “glaux.lib“)
#include “gl\glaux.h“
#include
#include
#include
#include
#include //获取系统时间
using namespace std ;
#define circleDispList 1
#define PI 3.14
int hourminutesecond;
int currentClock=1; //当前时钟初始化为第一个
#define TEXNUM 1 //创建的纹理ID个数
GLuint texobject[TEXNUM];//存储创建的纹理ID的数组
AUX_RGBImageRec* img; //图像的纹理储存
//Scroll
void waibian()
{
glEnable(GL_TEXTURE_2D); //启动二维纹理
glTexEnvi(GL_TEXTURE_ENVGL_TEXTURE_ENV_MODE GL_REPLACE);//设置纹理参数
glBindTexture(GL_TEXTURE_2D texobject[0]);//绑定纹理,载入所选图片
glBegin(GL_POLYGON);//参数指定绘制图元的方式
glTexCoord2f(00); //纹理坐标
glVertex2f(-1-1);//对应的矩形坐标
glTexCoord2f(-01);
glVertex2f(-11);
glTexCoord2f(11);
glVertex2f(11);
glTexCoord2f(10);
glVertex2f(1-1);
glEnd();
glDisable(GL_TEXTURE_2D);
}
void Circle() //时钟外圆及刻度点的绘画
{
glNewList(circleDispListGL_COMPILE);//显示列表circleDispList用来保存分配的显示列表的索引,显示列表是用来存储和执行
glColor3f(101);
glPointSize(3);
glBegin(GL_POINTS);//单个顶点集,这些顶点的集合组成一个圆
for (int i=0;i<=1000;i++)
{
float x=cos(i)/2y=sin(i)/2;
glVertex2f(xy);
}
glEnd();
glPointSize(6); //时钟的刻度
glColor3f(000);
glBegin(GL_POINTS);
for (int j=0;j<=360;j+=30)
{
float t=j*PI/180;// t为弧度
float x=cos(t)*0.9/2y=sin(t)*0.9/2;
glVertex2f(xy);
}
glEnd();
glEndList();
}
void Pointer(int currentClock) //时钟指针的绘画
{
time_t t1=time(0);//获取当前系统时间
float theta0=0theta1=0theta2=0;//定义时钟的三根针的旋转角度(弧度值)
theta0=6*localtime(&t1)->tm_sec*2*PI/360;//分离出秒针的逆时针旋转角度
theta1=6*localtime(&t1)->tm_min*2*PI/360+theta0/60;//分离出分针的逆时针旋转角度
theta2=30*localtime(&t1)->tm_hour*2*PI/360+theta1/12;//分离出时针的逆时针旋转角度
glColor3f(001);//秒针
glLineWidth(2);
glBegin(GL_LINES);
glVertex2f(00);
glVertex2f(0.45*sin(theta0)0.45*cos(theta0));
glEnd();
glColor3f(010); //分针
glLineWidth(3);
glLineWidth(2);
glBegin(GL_LINES);
glVertex2f(00);
glVertex2f(0.35*sin(theta1)0.35*cos(theta1));
glEnd();
glColor3f(100);//时针
glLineWidth(3);
glBegin(GL_LINES);
glVertex2f(00);
glVertex2f(0.25*sin(theta2)0.25*cos(theta2));
glEnd();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
waibian();
glCallList(circleDispList);
Pointer(currentClock);
glutSwapBuffers();
}
void LoadTexture(char* filename int index)
{
img = auxDIBImageLoad(filename); //读取图象数据并将其返回
glBindTexture(GL_TEXTURE_2D texobject[index]); //设置载入图片的索引号
glTexImage2D(GL_TEXTURE_2D 0 GL_RGB img->sizeX img->sizeY 0 GL_RGB GL_UNSIGNED_BYTE img->data);//图像的纹理储存
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_NEAREST);//此为纹理过滤参数设置
glTexParameteri(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_NEAREST);
}
void wenli()
{
glGenTextures(TEXNUM texobject);//创建纹理的ID
LoadTexture(“pic.bmp“ 0); //载入各种纹理
}
void re
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-06-20 07:25 Dazuoye\
文件 4407 2014-06-04 15:31 Dazuoye\Dazuoye.dsp
文件 522 2014-06-04 15:31 Dazuoye\Dazuoye.dsw
文件 33792 2014-06-20 07:23 Dazuoye\Dazuoye.ncb
文件 48640 2014-06-20 07:23 Dazuoye\Dazuoye.opt
文件 1084 2014-06-20 07:22 Dazuoye\Dazuoye.plg
目录 0 2014-06-20 07:25 Dazuoye\Debug\
文件 245838 2014-06-20 07:22 Dazuoye\Debug\Dazuoye.exe
文件 376064 2014-06-20 07:22 Dazuoye\Debug\Dazuoye.ilk
文件 549888 2014-06-20 07:22 Dazuoye\Debug\Dazuoye.pdb
文件 28265 2014-06-04 15:31 Dazuoye\Debug\opengl.obj
文件 6144054 2014-06-04 15:31 Dazuoye\Debug\pic.bmp
文件 312320 2014-06-20 07:22 Dazuoye\Debug\vc60.idb
文件 135168 2014-06-04 15:31 Dazuoye\Debug\vc60.pdb
文件 3851 2014-06-04 15:31 Dazuoye\opengl.cpp
文件 6144054 2014-06-04 15:31 Dazuoye\pic.bmp
目录 0 2014-06-20 07:25 Dazuoye\效果图\
文件 69895 2014-06-04 15:31 Dazuoye\效果图\1.jpg
文件 68405 2014-06-04 15:31 Dazuoye\效果图\2.jpg
文件 66205 2014-06-04 15:31 Dazuoye\效果图\3.jpg
文件 3851 2014-06-04 15:31 Dazuoye\效果图\总cpp.txt
相关资源
- 程序员的自我修养(mobi)
- 基于STM32的数据采集+心率检测仪原理
- HLA RTI 1.3NG V5程序员手册
- contour等值线源程序
- OpenGL环境下贴图法画树代码
- LINUX下各种小程序源码
- STM32开发板上实现实时的时钟显示
- 基于STM32F103的PT100测温程序
- stm32f103C8T6 MCP3204程序代码
- stm32f103竞赛板的一个流水灯程序,是
- STM32F207的U盘_USB_IAP升级程序 Bootloade
- 断裂力学中的数值计算方法及工程应
- STM32F103 步进电机驱动程序
- 30个神经网络算法源程序
- LD3320程序+原理图.rar
- 程序打包.7z
- stm32 MPU6050四元数姿态结算程序
- 字符识别程序,26个英文字母的识别
- UWB_TDOA.rar
- SEM尺寸与图像处理程序(smileview)与
- 蓝牙数据传输程序
- ZigBee源程序(包括定位源程序)
- 四位数码管STM32计时程序
- stm32F107 CAN通讯的程序
- C程序设计语言 第二版新 PDf (绝对超
- OpenGL环境配置文件
- 基于52单片机的智能时钟系统(课程设
- 基于STM32F103的LCD1602的IIC显示程序
- STM32接上位机程序
- 基于PE4302的步进衰减以及对应的51程序
评论
共有 条评论