OpenGL入门示例3——黑色背景绘制绿色圆形

来源:互联网 发布:重庆公务员培训 知乎 编辑:程序博客网 时间:2024/05/21 08:33
#include<GL/glut.h>//GLUT是OpenGL实用工具包,自动包含了<GL/gl.h>和<GL/glu.h>,编程时不必再次包含它们。#include<math.h>//for sin() and cos()#define PI 3.1415926535898void display(void){glClear(GL_COLOR_BUFFER_BIT);//清除所有的像素glColor3f(0.0,1.0,0.0);//绘制颜色(绿色),函数名glColor3f中的3代表三个参数,f代表参数类型为GLfloat型,下同GLint circle_points=100;//100个顶点组成的“圆”GLdouble angle=0;glBegin(GL_POLYGON);//开始绘制一个圆for(int i=0;i<circle_points;i++){angle=2*PI*i/circle_points;glVertex2f(cos(angle),sin(angle));}//说明:该方法不是绘制圆的最好方法,尤其是当需要反复绘制时,cos、sin和for循环开销很大。//另一种方法是使用GLU函数,一次性计算出所以顶点的坐标,然后保存在数组中,并创建一个显示列表或使用顶点数组来渲染它们glEnd();//绘制结束glFlush();//立刻开始处理保存在缓冲区中的OpenGL函数调用}void init(void){glClearColor(0.0,0.0,0.0,0.0);//指定清除颜色(黑色),即背景颜色glMatrixMode(GL_PROJECTION);//初始化视景体glLoadIdentity();glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);}//为了最大限度地提高效率,那些只需调用一次的操作(设置背景颜色和坐标系统)被放置到函数init()中//渲染(和重新渲染)场景的操作被放置到函数display()中,它是注册的GLUT显示回调函数int main(int argc,char** argv)//注意参数{glutInit(&argc,argv);//初始化GLUT并处理命令行参数glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//指定模式:单缓存OR双缓存;RGBA模式OR颜色索引模式glutInitWindowSize(250,250);//指定窗口大小(像素)glutInitWindowPosition(100,100);//指定窗口左上角在屏幕上的位置glutCreateWindow("Hello");//使用OpenGL场景创建一个窗口,参数为窗口名称init();//调用初始化函数glutDisplayFunc(display);//注册用于显示图形的回调函数,每当GLUT认为需要重绘窗口时,都会执行该函数,故应将重绘场景所需调用的函数都放到显示回调函数中。glutMainLoop();//进入主循环并处理事件,此时创建的所有窗口都会显示出来,被渲染到这些窗口中的内容也将显示出来,程序开始处理事件,注册的显示回调函数被触发return 0;//ANSI C要求函数main()返回一个int值}

运行结果:

怎么只绘了四分之一圆?查找原因中……


0 0
原创粉丝点击