一个会动的五角星的绘制
五角星的绘制
OpenGL第一课,绘制一个会旋转的五角星
使用的编译器是Clion,如何配置这里不做介绍,直接出一个小例子
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
using namespace std;
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" );
#pragma comment (lib, "opengl32.lib")
#pragma comment (lib, "glu32.lib")
#pragma comment (lib, "glaux.lib")
void init(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,200.0,0.0,200.0);//这个表示使用正投影将世界坐标系二维矩形区域映射到屏幕上 x 0 - 200 y 0 150 只要是在该矩形内定义的对象 都会显示窗口上
}
void display(void)//绘制函数
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glutSolidTetrahedron();
glFlush();
return;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);//初始化
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//指定使用了RGBA模式还是颜色索引模式,还可以指定使用单缓冲还是双缓冲
glutInitWindowPosition(0,0);//窗口左上角的屏幕位置
glutInitWindowSize(500, 500);//窗口大小
glutCreateWindow("My OpenGL");//创建一个OpenGL窗口
init();
glutDisplayFunc(display);//事件回调显示函数
glutMainLoop();
}
首先需要先画出一个五角星
这里的五角星参数是直接给定的,也可以自己书写函数进行输入,使用该函数替代上述的绘制函数
//五角星参数
float r=1,g=0,b=0,x=100.0f,y=100.0f;
float R[2]={100,50};
float angle=18.0;//角度初始化
// 五角星绘制函数
void draw(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0,0,1.0);
glBegin(GL_LINE_LOOP);
for (int i = 0; i < 10; i++) {
glVertex2f(x + R[i % 2] * cos((i * 36.0 + angle) / 180 * pi), y + R[i % 2] * sin((i * 36.0 + angle) / 180 * pi));
}
glEnd();
glFlush();
}
最后我们要让它动起来
void change(void)
{
++angle;
if(angle>=360)
angle=0;
draw();
Sleep(40);//用于设置延时
}
现在我们就大功告成了