资源简介
大量的Opengl实例代码和exe文件,新手可以参考
代码片段和文件信息
#include
#include
#include
#include
int Wwidth=500 Wheight=500;
int radius=100;
float sanglemanglehangle;
char timebuffer[9];
int secondminutehour;
void setTime();
void drawCircle();
void plotC(int x int y int cx int cy GLfloat * color);
void Bresenham_Circle_Algorithm(int cx int cy GLfloat * color);
void drawPoint();
void drawHour();
void drawMinute();
void drawSecond();
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
drawCircle();
drawPoint();
drawHour();
drawMinute();
drawSecond();
glutSwapBuffers();
}
void timer(int value)
{
setTime();
glutPostRedisplay();
glutTimerFunc(500 timer 1);
}
void reshape(int w int h)
{
glViewport(00 w h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
gluOrtho2D(-radius radius -radius*h/w radius*h/w);
else
gluOrtho2D(-radius*w/h radius*w/h -radius radius);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc char* argv [])
{
glutInit(&argc argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(Wwidth Wheight);
glutCreateWindow(“Clock“);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutTimerFunc(500 timer 1);
glutMainLoop();
return 1;
}
void setTime()
{
_strtime(timebuffer);
hour=((int)(timebuffer[0]-‘0‘)*10+(int)(timebuffer[1]-‘0‘));
minute=((int)(timebuffer[3]-‘0‘)*10+(int)(timebuffer[4]-‘0‘));
second=((int)(timebuffer[6]-‘0‘)*10+(int)(timebuffer[7]-‘0‘));
sangle= (float)(90 - second*6);
mangle= (float)(90 - minute*6);
hangle= (float)(90 - (hour%12)*30);
}
void drawCircle()
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
GLfloat color[]={1.0 1.0 1.0};
glPointSize(2);
Bresenham_Circle_Algorithm(0 0 color);
glPointSize(1);
}
void plotC(int x int y int cx int cy GLfloat * color)
{
glColor3fv(color);
glBegin(GL_POINTS);
glVertex2f(cx+x cy+y);
glVertex2f(cx+x cy-y);
glVertex2f(cx-x cy+y);
glVertex2f(cx-x cy-y);
glVertex2f(cx+y cy+x);
glVertex2f(cx+y cy-x);
glVertex2f(cx-y cy+x);
glVertex2f(cx-y cy-x);
glEnd();
}
void Bresenham_Circle_Algorithm(int cx int cy GLfloat * color)
{
int x y d;
y=radius;
d=1-radius;
x=0;
while(x<=y){
plotC(xycxcy color);
if(d<0)
d+=2*x+3;
else{
d+=2*(x-y)+5;
y=y-1;
}
x=x+1;
}
}
void drawPoint()
{
glBegin(GL_QUADS);
glColor3f(1.0 0.6 0.0);
glVertex2f(-1 radius);
glVertex2f(1 radius);
glVertex2f(1 radius-5);
glVertex2f(-1 radius-5);
glVertex2f(-1 -(radius));
glVertex2f(1 -(radius));
glVertex2f(1 -(radius-5));
glVertex2f(-1 -(radius-5));
glVertex2f(radius-1);
glVertex2f(radius 1);
glVertex2f(radius-5 1);
glVertex2f(radius-5 -1);
glVertex2f(-(radius) -1);
glVertex2f(-(radius) 1);
glVertex2f(-(radius-5) 1);
glVertex2f(-(radius-5) -1);
glEnd();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 198899 2014-11-18 22:02 图形学\01.jpg
文件 11493 2014-11-18 22:04 图形学\02.jpg
文件 83307 2014-11-18 22:05 图形学\03.jpg
文件 3983 2014-10-31 23:18 图形学\Clock.c
文件 41257 2013-12-09 21:11 图形学\Clock.exe
文件 3114 2014-12-03 19:52 图形学\Exam206.cpp
文件 188536 2014-10-19 20:21 图形学\Exam206.exe
文件 7576 2014-10-06 09:34 图形学\Gentex.cpp
文件 200822 2014-10-06 09:34 图形学\Gentex.exe
文件 5096 2014-12-01 18:23 图形学\GLUT.CPP
文件 188530 2014-10-07 21:36 图形学\GLUT.exe
文件 2697 2014-12-01 18:24 图形学\OpenGL模型绘制、旋转与菜单交互.cpp
文件 188507 2014-10-29 21:40 图形学\OpenGL模型绘制、旋转与菜单交互.exe
文件 2059 2013-12-10 06:58 图形学\园环、球、五角星与旋转.cpp
文件 204875 2014-10-31 23:29 图形学\园环、球、五角星与旋转.exe
文件 2155 2012-04-27 21:00 图形学\图元描述\arraycube.c
文件 192626 2014-09-14 01:49 图形学\图元描述\arraycube.exe
文件 1089 2014-09-06 21:03 图形学\图元描述\Clip.cpp
文件 188530 2014-09-06 21:03 图形学\图元描述\Clip.exe
文件 1785 2014-09-06 05:05 图形学\图元描述\DrawCircle.cpp
文件 204926 2014-09-06 04:46 图形学\图元描述\DrawCircle.exe
文件 1322 2014-09-06 20:42 图形学\图元描述\Exam301.cpp
文件 204920 2014-09-06 20:42 图形学\图元描述\Exam301.exe
文件 2282 2014-09-06 16:28 图形学\图元描述\Exam406.cpp
文件 188536 2014-09-06 16:31 图形学\图元描述\Exam406.exe
文件 697 2014-09-10 03:38 图形学\图元描述\Example001.cpp
文件 188542 2014-09-10 03:39 图形学\图元描述\Example001.exe
文件 595 2014-09-10 03:42 图形学\图元描述\Example002.cpp
文件 188542 2014-09-10 03:42 图形学\图元描述\Example002.exe
文件 663 2014-09-10 03:48 图形学\图元描述\Example003.cpp
............此处省略62个文件信息
评论
共有 条评论