今天没有什么实质性的内容,第二章中为了讲解glEdgeFlag函数,特别讲了一个拆分三角形的例子,但是其实是展现了一下递归的作用。没有什么特别。
那我今儿干脆把自己这两天笔记里的几块代码拼成一个完整的田地好了:
#include<GL/glut.h> /*Moc Os 应该使用<glut/glut.h> */
void display(){
/*干各种你要干的码农活儿,例如灯光,效果,沙滩,菠菜,加班,等等。。*/
glClear(GL_COLOR_BUFFER_BIT);//buffer设置为颜色可写
glBegin(GL_TRIANGLES);//开始画三角形
glColor3f(1.0,0.0,0.0);//设置第一个顶点为红色
glVertex2f(-1.0,-1.0);//设置第一个顶点的坐标为(-1.0,-1.0)
glColor3f(0.0,1.0,0.0);//设置第二个顶点为绿色
glVertex2f(1.0,-1.0);//设置第二个顶点的坐标为(0.0,-1.0)
glColor3f(0.0,0.0,1.0);//设置第三个顶点为蓝色
glVertex2f(0.0,1.0);//设置第三个顶点的坐标为(-0.5,1.0)
glEnd();//三角形结束
glFlush();//强制OpenGL将结果呈现到屏幕上。
}
void myReshape(GLsizei w,GLsizei h){
/*大力渲染、鼓吹各种你干了的的码农活儿,例如灯光,效果,沙滩,菠菜,加班,等等。。*/
glViewport(0,0,w,h);//设置视口
}
/* 主函数*/
int main(int argc, char** argv){
/*在任何glut的方法被调用前,调用这个函数,否则没有种子,袁隆平也救不了你。 */
glutInit(&argc, argv);
/*这里会创建一个标题为“码农标准田”的窗口。就是码农的地了,没有地,好像袁隆平依然救不了你。不知道试管田产量如何。。 */
glutCreateWindow("码农标准田");
/*注册回调,告诉老板领导你都准备干什么 */
/* 参数 display 就是上面那些个灯光沙滩以及加班*/
glutDisplayFunc(display);
glutReshapeFunc(myReshape);
/*glutMainLoop这个函数使程序进入无限循环,不断的展示我们display里的效果、沙滩、纹理、加班,*/
/*直到窗口关闭,田地被摧毁,或者收到其他交互事件。比如按键事件、鼠标事件等老板领导们发放的新需求、新政策等*/
glutMainLoop();
/*因为上面的循环,之后的代码将不会被执行,包括下面的return语句。这是《OpenGL 编程基础》中告诉我的,没有验证,待验证。*/
return 0;
}
田地代码如上。
顺手记录一些tips:
1 glLineStipple(GLint factor, GLushort pattern)函数
该函数作用是按照pattern的模式绘制一条虚线,pattern是一个16位二进制数,对pattern中,每一位如果是1,那么在直线上一个像素的颜色,如果为0,当前像素不填充颜色,例如,当factor的值是1,pattern的值是0x0001, 那么pattern只有最低一位是1其他15位都是0(既0000000000000001)那么,在画线段时,这条线段上,每16个像素只有1一个像素有颜色,也就是说,这个线段的上的每个可以看到的点都相聚15个像素。
再看看factor参数,factor参数的作用是,在按照pattern绘制时,按照pattern的每一位去绘制factor次。比如,还是刚才的例子,当factor的值为2时,会先连续画1x2=2个像素,然后跳过(15x2=30)个像素。就是线段上每2个连续的像素之间间隔30个像素。就好象,线段被放大了一样。
这个函数需要打开OpenGL的点划功能:
glEnable(GL_LINE_STIPPLE);
OpenGL中建议在不许要相应功能时将其关闭:
glDisable(GL_LINE_STIPPLE);
其他功能类似处理。
2 glEdgeFlage(GLboolean flag) 函数
这个函数的作用是,以该函数以后设置的顶点为起点的线段(或边)是否显示。
需要所绘制的多边形为LINE模式:
glPolygonMode(GL_FONT, GL_LINE);
例如
glBegin(GL_POLYGON);//开始画多边形
//glShadeModel(GL_FLAT);//设置为光滑明暗模式
glEdgeFlag(GL_TRUE);//以(-0.5, -0.5)为起点的线段将被显示
glVertex2f(-0.5, -0.5);
glEdgeFlag(GL_FALSE);//以(0.5, -0.5)为起点的线段将被显示将不显示
glVertex2f(0.5, -0.5);
glEdgeFlag(GL_TRUE);//以(0.0, -0.5)为起点的线段将被显示将显示。如果,注掉这个函数,那么这个顶点也不显示,因为在之前设置过一次glEdgeFlag(GL_FALSE)
glVertex2f(0.0, 0.5);
glEnd();//多边形结束
glPolygonMode(GL_FONT, GL_LINE);//设置多边形模式为LINE模式。
顺带一提,CodeBlock有一些操作上的bug。比如build总是不更新代码,鼠标点击代码编辑框的关闭按钮没有响应等等。。有点小郁闷。。
分享到:
相关推荐
OpenGL编程基础OpenGL编程基础OpenGL编程基础
《国外经典教材·计算机科学与技术·OpenGL编程基础(第3版)》完整、详细介绍基本的OpenGL函数和命令,便于读者快速查找;从非数学角度介绍如何进行OpenGL程序设计,有利于读者迅速入门;各章提供可运行的范例,有助...
OpenGL的比较基础的参考书,帮助想入门OpenGL的人进行学习。
openGL编程基础 openGL编程基础 openGL编程基础 openGL编程基础
OpenGL编程基础(含源码)
2009年清华大学出版社出版的图书。 第1章 绪论 1.1 OpenGL API 1.2 关于OpenGL的三种观点 1.2.1 程序员的观点 1.2.2 OpenGL状态机 ...1.2.3 OpenGL绘制流水线 ...1.3 OpenGL的组成 ...第2章 OpenGL中的二维编程
OpenGL编程基础得分的的地方是打发单点的大大大丰富的
OpenGL 编程指南 第七版 源码 红宝书源码,未经任何修改
opengl编程指南第八版
本书共12张,第一章:OpenGL概述,第二章:着色器基础,第三章:OpenGL绘制方式,第四章:颜色、像素和帧缓存,第五章:视口变换、剪切与反馈,第六章:纹理,第七章:光照与阴影,第八章:程序式纹理,第九章:细分...
OpenGL编程基础(第三版)Edward Angel 清华大学出版社 书本代码大全
[OpenGL编程基础中文版].(美国)Edward.Angel.清晰版
完整的OpenGL编程指南第八版源代码,
OpenGL编程基础课件第九章 曲线与曲面
OpenGL是在计算机图形学等很多领域内常常用的算法。
Opengl编程指南 第八版 源码.part1
OpenGL编程指南(第六版).pdf ),学习openGL必备
第1章OpenGL简介 1.1什么是OpenGL? 1.2一段简单的OpenGL代码 1.3OpenGL函数的语法 1.4OpenGL是个状态机 1.5OpenGL渲染管线 1.5.1显示列表 1.5.2求值器 1.5.3基于顶点的操作 1.5.4图元装配 1.5.5像素操作 1.5.6纹理...
OpenGL编程指南第八版高清中文完整版 OpenGL编程指南第八版高清中文完整版