#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入门示例3——黑色背景绘制绿色圆形相关推荐

  1. OpenGL入门学习 课程 (三) 绘制几何图形的一些细节问题

    http://oulehui.blog.163.com/blog/static/79614698201191832753312/ 先回顾一下我们都学习了些什么: 第一课,编写第一个OpenGL程序 第 ...

  2. OpenGL入门程序一:绘制简单的矩形

    #include <GL/glut.h>void MyDisplay(void);int main(int argc, char **argv) {//设置窗口的大小glutInitWin ...

  3. OpenGL入门示例8——图形平移、旋转、缩放

    #include<GL/glut.h> #include <windows.h>static GLfloat spin=0.0; //旋转量 static GLfloat mo ...

  4. openGL入门(三)绘制带对角线的正六边形,并在各个顶点上标明字母

    在上篇文章的基础上,本篇文章介绍如何继续在多边形的各个顶点加上字母.openGL本身不带有绘制字母的函数,是通过glutBitmapCharacter(font , character)绘制位图的算法 ...

  5. OpenGL入门北斗星点绘制

    ** OpenGL入门–北斗星点的绘制 C++代码 唯一遇到的问题就是glFlush()这个函数的问题 #include <GL/glut.h> #include<gl/GLU.h& ...

  6. OpenGL入门学习[二] 绘制简单的几何图形

    OpenGL入门学习[二] 本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念 ...

  7. 第2章第22节:如何在SwiftUI中绘制一个圆形 [SwiftUI快速入门到实战]

    在SwiftUI里可以很方便的绘制各种各样的图形,您将在第七章和第八章,绘制各种复杂和漂亮的图形和图表,本节课先演示简单圆形的绘制. 绘制一个圆形,它的填充颜色默认是黑色. 通过调用它的fill方法, ...

  8. 最全面的openGL 入门学习

    自己在找openGL学习资料的时候,找到此篇openGL入门学习(虽然不是移动开发,但给我提供了非常好的思路),所以转一下让更多人知道,本文来自http://www.cppblog.com/doing ...

  9. OpenGL入门学习 (转)

    OpenGL入门学习 (转) 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜 ...

最新文章

  1. BZOJ1566:[NOI2009]管道取珠——题解
  2. 不知道当前谁激活键盘时的隐藏键盘方法
  3. ncnn-mobile
  4. 小凡模拟器:DynamipsGUI使用问题解决方法
  5. linux过滤端口抓包_Linux抓包工具tcpdump使用总结,WireShark的过滤用法
  6. 稳定性之重试,如何优雅地重试,防止系统雪崩
  7. 关于scanf 与 cin gets(),getline()......输入输出字符串的区别
  8. 奚江华的几篇Silverlight文章
  9. android使用Charles抓包https请求
  10. [境内法规]中国人民银行关于分支行反洗钱工作的指导意见—银发[2005]56号
  11. 显示器性能测试软件,MonitorTest(显示器性能测试软件) V4.0.1001 官方版
  12. 图像匹配论文总结(一)
  13. Clark变换和Park变换仿真验证
  14. 打印纸张计算机耗材,耗材相关:与打印机产生故事的常用纸类型
  15. 用keras tuner 来优化tensorflw超参数
  16. 全球365隐私政策服务协议
  17. JavaApi.Date
  18. 精益生产管理十大工具
  19. C#中的WinForm问题——如何设置窗体的大小为超过屏幕显示的最大尺寸?
  20. android之网络请求框架OKhttp、原生http请求

热门文章

  1. 可以将Word文档插入到CAD中吗?怎么操作?
  2. 手机上怎么将DWG转PDF?这个方法轻松解决
  3. html中的disabled属性的使用方式
  4. kernelbase.dll故障怎么处理-kernelbase.dll修复工具下载
  5. 告别单身不容易 程序员告别单身功略
  6. 别人看我抖音显示服务器,抖音怎么看谁经常看你 怎么查别人偷偷看我抖音
  7. 亚马逊短视频制作需要注意什么?
  8. 融云通信云发力教育行业 助在线教育风口继续腾云
  9. flash 第七章 帧和元件知识点 思维导图
  10. 制作.ico透明图标