zzuli树莓的同学可以参考但不要抄作业唔~
先画一个不旋转滴~
#include<GL/glut.h>
#include<math.h>
const GLfloat pi = 3.1415926f;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_LOOP);
glColor3f(1.0f,0.0f,0.0f);//六边形边框颜色
for (int i = 1; i <= 6; i++)
{
glVertex2f(0.6f*cos(2 * (pi / 6)*i), 0.6f*sin(2 * (pi / 6)*i));
}
glEnd();
glFlush();
}
int main(int argc,char*argv[])
{
glutInit(&argc,argv); //初始化
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE); //选择rgb,单缓冲
glutInitWindowPosition(300,100); //窗体位置
glutInitWindowSize(400,400); //窗体大小
glutCreateWindow("六边形");
glClearColor(1.0, 1.0, 0.0, 0);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/1cc95a0553847f481a936c2ccb948f8c.png)
再画一个会旋转滴~
#include <math.h>
#include <Windows.h>
#include <gl\glut.h>
#include <stdlib.h>
#define PI 3.14159 //设置圆周率
int n = 6, R = 10; //多边形变数,外接圆半径
float theta = 0.0; //旋转初始角度值
//绘制正六边形
void Display(void)
{
glClearColor(1, 1, 1, 0);//设置白色绘图背景颜色(清屏颜色)
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0, 0, 1); //设置深蓝色绘图颜色
glBegin(GL_POLYGON); //开始绘制六边形
for (int i = 0; i < n; i++)
glVertex2f(R * cos(theta + i * 2 * PI / n), R * sin(theta + i * 2 * PI / n));
glEnd();
glutSwapBuffers(); //双缓冲的刷新模式;
}
//旋转
void myidle()
{
theta += 1; //旋转角度增加1度
if (theta >= 2 * PI) {
theta -= 2 * PI; //如果旋转角度大于360度,则复原
}
glutPostRedisplay(); //重画,相当于重新调用Display(),改编后的变量得以传给绘制函数
}
void Reshape(GLsizei w, GLsizei h)
{
glMatrixMode(GL_PROJECTION); //投影矩阵模式
glLoadIdentity(); //矩阵堆栈清空
gluOrtho2D(-1.5 * R * w / h, 1.5 * R * w / h, -1.5 * R, 1.5 * R); //设置裁剪窗口大小
glViewport(0, 0, w, h); //设置视区大小
glMatrixMode(GL_MODELVIEW); //模型矩阵模式
}
int main(int argc, char** argv)
{
glutInit(&argc, argv); //初始化GLUT库;
glutInitWindowSize(400, 400); //设置显示窗口大小
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //设置显示模式;(注意双缓冲)
glutCreateWindow("旋转六边形"); // 创建显示窗口
glutDisplayFunc(Display); //注册显示回调函数
glutReshapeFunc(Reshape); //注册窗口改变回调函数
glutIdleFunc(myidle); //注册闲置回调函数
glutMainLoop(); //进入事件处理循环
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/cc04bb59447f8ca38293f95ab8ba357a.png)