您的位置:首页 > 运维架构

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

2014-03-18 09:47 274 查看
#include<GL/glut.h>	//GLUT是OpenGL实用工具包,自动包含了<GL/gl.h>和<GL/glu.h>,编程时不必再次包含它们。
#include<math.h>	//for sin() and cos()
#define PI 3.1415926535898
void 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值
}

运行结果:



怎么只绘了四分之一圆?查找原因中……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opengl c 图形 OpenGL入门