OpenGL入门示例3——黑色背景绘制绿色圆形
#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——黑色背景绘制绿色圆形相关推荐
- OpenGL入门学习 课程 (三) 绘制几何图形的一些细节问题
http://oulehui.blog.163.com/blog/static/79614698201191832753312/ 先回顾一下我们都学习了些什么: 第一课,编写第一个OpenGL程序 第 ...
- OpenGL入门程序一:绘制简单的矩形
#include <GL/glut.h>void MyDisplay(void);int main(int argc, char **argv) {//设置窗口的大小glutInitWin ...
- OpenGL入门示例8——图形平移、旋转、缩放
#include<GL/glut.h> #include <windows.h>static GLfloat spin=0.0; //旋转量 static GLfloat mo ...
- openGL入门(三)绘制带对角线的正六边形,并在各个顶点上标明字母
在上篇文章的基础上,本篇文章介绍如何继续在多边形的各个顶点加上字母.openGL本身不带有绘制字母的函数,是通过glutBitmapCharacter(font , character)绘制位图的算法 ...
- OpenGL入门北斗星点绘制
** OpenGL入门–北斗星点的绘制 C++代码 唯一遇到的问题就是glFlush()这个函数的问题 #include <GL/glut.h> #include<gl/GLU.h& ...
- OpenGL入门学习[二] 绘制简单的几何图形
OpenGL入门学习[二] 本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念 ...
- 第2章第22节:如何在SwiftUI中绘制一个圆形 [SwiftUI快速入门到实战]
在SwiftUI里可以很方便的绘制各种各样的图形,您将在第七章和第八章,绘制各种复杂和漂亮的图形和图表,本节课先演示简单圆形的绘制. 绘制一个圆形,它的填充颜色默认是黑色. 通过调用它的fill方法, ...
- 最全面的openGL 入门学习
自己在找openGL学习资料的时候,找到此篇openGL入门学习(虽然不是移动开发,但给我提供了非常好的思路),所以转一下让更多人知道,本文来自http://www.cppblog.com/doing ...
- OpenGL入门学习 (转)
OpenGL入门学习 (转) 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜 ...
最新文章
- BZOJ1566:[NOI2009]管道取珠——题解
- 不知道当前谁激活键盘时的隐藏键盘方法
- ncnn-mobile
- 小凡模拟器:DynamipsGUI使用问题解决方法
- linux过滤端口抓包_Linux抓包工具tcpdump使用总结,WireShark的过滤用法
- 稳定性之重试,如何优雅地重试,防止系统雪崩
- 关于scanf 与 cin gets(),getline()......输入输出字符串的区别
- 奚江华的几篇Silverlight文章
- android使用Charles抓包https请求
- [境内法规]中国人民银行关于分支行反洗钱工作的指导意见—银发[2005]56号
- 显示器性能测试软件,MonitorTest(显示器性能测试软件) V4.0.1001 官方版
- 图像匹配论文总结(一)
- Clark变换和Park变换仿真验证
- 打印纸张计算机耗材,耗材相关:与打印机产生故事的常用纸类型
- 用keras tuner 来优化tensorflw超参数
- 全球365隐私政策服务协议
- JavaApi.Date
- 精益生产管理十大工具
- C#中的WinForm问题——如何设置窗体的大小为超过屏幕显示的最大尺寸?
- android之网络请求框架OKhttp、原生http请求