资源简介
图形图像课程设计,运用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
相关资源
- 2018西门子杯中国智能制造挑战赛逻辑
- 自已写的 自习室预约小程序微信125
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- E4A无障碍跨程序操作类库(带源码、
- labview魔方程序
- 程序员专用字体YaHei.Consolas.1.11b42517
- scratch3.0 源程序(说相声)
- STM32 led 时钟
- 欧姆龙CP1系列单轴定位PLC程序.cxp
- SVR算法程序可运行
- labview编程软件滤波器以及编写程序设
- 电力系统潮流计算程序集合
- OpenGL参考手册
- 仿知乎界面小程序源代码
- STM32蓝牙和串口程序
- elantech触控板驱动程序 v13.6.11 官方最
- 根据硬件ID和程序ID生成注册码
- 用python编写的移动彩信的发送程序
- TCL-S1916 ,1924交换机管理程序
- 51单片机PWM程序,占空比、周期可调整
- 嵌入式图形界面MiniGUI的示例程序9例
- 数字频率合成dds正弦波基于FPGA的DDS产
- 28335CAN调试程序
- 导线测量平差程序 很实用
- USB转串口驱动,FT232R驱动程序,最新
- 单片机电子时钟 闹钟 日历
- 改进的BP神经网络算法
- 通风网络解算程序 fortran90
- 编写简单的RMI程序 多线程web 服务器
评论
共有 条评论