#include<gl/glut.h>
#include <gl/glu.h>
#include <gl/gl.h>
#include<math.h>
void Initial(void)//初始化函数
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);//白色背景,前3个是RGB,最后是Alpha值,用来控制透明,1.0表示完全不透明
glMatrixMode(GL_PROJECTION);//OpenGL按照三维方式来处理图像,所以需要一个投影变换将三维图形投影到显示器的二维空间中
}
void myDisplay(void)//显示回调函数
{
float pi = 3.14;
int r = 5;
float a, b;
glOrtho(-10.0,10.0,-10.0,10.0,-10.0,10.0);
glClear(GL_COLOR_BUFFER_BIT);//使用glClearColorz中指定的值设定颜色缓存区的值,即将窗口中的每一个像素设置为背景色
glPointSize(5);
glBegin(GL_LINE_LOOP);
for (int i = 0; i < 60; i++)
{
glColor3f(0.0f, 0.0f, 1.0f);
a = r*cos(2 * pi*i / 60.0);
b = r*sin(2 * pi*i / 60.0);
glVertex3d(a,b,0);
}
glEnd();
glBegin(GL_LINE_LOOP);
for (int i = 0; i < 60; i++)
{
glColor3f(0.0f, 0.0f, 1.0f);
a = 1.5*r * cos(2 * pi*i / 60.0);
b = 1.5*r * sin(2 * pi*i / 60.0);
glVertex3d(a, b, 0);
}
glEnd();
//glutSolidCube(4);
glFlush();//清空OpenGL命令缓冲区,强制执行命令缓冲区中所有OpenGL函数
}
int main(int argc, char * argv[])//这是使用glut库函数进行窗口管理
{
glutInit(&argc, argv);//使用glut库需要进行初始化
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);//设定窗口显示模式,颜色模型和缓存,这里是RGB颜色模型和单缓存
glutInitWindowPosition(100, 100);//设定窗口的初始位置,屏幕左上角为原点,单位为像素
glutInitWindowSize(600, 600);//设定窗口的大小
glutCreateWindow("opengl_test");//创建一个窗口,参数是窗口标题名
glutDisplayFunc(&myDisplay);//将myDisplay指定为当前窗口的显示内容函数
Initial();
glutMainLoop();//使窗口框架运行起来,使显示回调函数开始工作
return 0;
}
opegl画圆
最新推荐文章于 2022-03-16 19:43:10 发布