计算机图形学(第四版)-第一个画线例子- 读书笔记P30
说明:内容为计算机图形学(第四版)这本书的读书笔记,会记录这本书的一些编码知识和其他内容,目标:将厚书读薄yeah~
1.OpenGL基本语法:
2.附加库:
3.OpenGL的安装和环境配置:
参考 我的另一篇博客->计算机图形学-课堂笔记1
示例1:使用OpenGL画一条线:
运行结果:
/*
By:MyNameIsAngela
2016-9-9 [百日读书计划]Day1-读书笔记-计算机图形学(第四版)-P33
编程工具:Visual Studio 2012 Pro + glut 3.7.6
注:所有的注释均在该函数的右侧或上方
*/
#include //gult.h已经包含了gl.h 和glu.h 所以不需要重复写头文件
void init (void)
{
//对显示窗口设置背景颜色,前三个变量为红、绿、蓝,最后一个为alpha值α,表示透明度
//前三个变量值的范围为[0.0-1.0],若全为1.0则为白色,若全为0.0则为黑色
//最后一个变量值的范围为[0.0-1.0]若设1.0则不透明,若设0.0则完全透明
//此处用RGB颜色值将显示窗口的背景颜色设定为白色
glClearColor(1.0, 1.0, 1.0, 0.0);
//因为OpenGL采用三维观察操作来处理图形,所以显示二维图形时,需要将图形投影到显示窗口中
//此处表示使用正投影将世界坐标系二维矩形区域的内容映射到屏幕上
glMatrixMode(GL_PROJECTION);
//区域的x坐标值从0.0-200.0,y坐标值从0.0-150.0,只要是该矩形内定义的对象,都会出现在显示窗口中
gluOrtho2D(0.0, 200.0, 0.0, 150.0);
}
void lineSegment(void)
{
//让赋背景值的显示窗口在屏幕上出现???如果不赋背景值是否不需要该函数
//此处glClearColor即为颜色缓存(glClearColor中指定)的值
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 0.4, 0.2);
glBegin(GL_LINES);
glVertex2i(180, 15);
glVertex2i(10, 145);
glEnd();
glFlush();//强制清空所有缓存来处理OpenGL函数
}
void main (int argc, char** argv)
{
glutInit(&argc, argv);//初始化GLUT
//设定(显示窗口的缓存+颜色模型)
//此处显示窗口使用单个缓存,并用RGB颜色模型来选择颜色值
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
//给出显示窗口左上角相对屏幕的初始位置,若不设定的话,就使用默认位置和大小
//此处屏幕左上角位置为0,0,该显示窗口在屏幕左边界向右50个像素,屏幕上边界向下100个像素的位置上
glutInitWindowPosition(50,100);
glutInitWindowSize(400,300);//设定显示窗口的初始宽度和高度的像素数,此处窗口大小为宽度400像素,高度300像素
glutCreateWindow("An Example OpenGL Program 2016-9-9");//创建显示窗口(提供默认位置和大小)+给定窗口标题
init();
glutDisplayFunc(lineSegment);//指定显示窗口中显示的内容,即将()内的图赋给显示窗口
//将所有(已创建的显示窗口+其中的图形)显示在屏幕上。
//它显示初始图形,并使程序进入检查鼠标或键盘等设备输入的无穷循环之中
//ATTENTION!!!该函数必须是程序中的最后一个!!!
glutMainLoop();
}
示例1(无注释版):使用OpenGL画一条线:
/*
By:MyNameIsAngela
2016-9-9 [百日读书计划]Day1-读书笔记-计算机图形学(第四版)-P30
编程工具:Visual Studio 2012 Pro + glut 3.7.6
*/
#include void init (void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 200.0, 0.0, 150.0);
}
void lineSegment(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 0.4, 0.2);
glBegin(GL_LINES);
glVertex2i(180, 15);
glVertex2i(10, 145);
glEnd();
glFlush();
}
void main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(50,100);
glutInitWindowSize(400,300);
glutCreateWindow("An Example OpenGL Program 2016-9-9");
init();
glutDisplayFunc(lineSegment);
glutMainLoop();
}
OpenGL和GLU记录错误的方法->使用出错编码
OpenGL出错编码(待补充)
示例2:OpenGL的出错处理
使用结果:会返回出错的符号常数,根据该符号常数的含义,可知该处发生何种错误
/*
By:MyNameIsAngela
2016-9-9 [百日读书计划]Day1-读书笔记-计算机图形学(第四版)-P34
编程工具:Visual Studio 2012 Pro + glut 3.7.6
注:所有的注释均在该函数的右侧或上方
示例2:OpenGL的出错处理
*/
#include GLenum errorCheck()
{
//该调用返回当前的出错编码,并清除内部出错标志
//若返回值为GL_NO_ERROR则无错
GLenum code;
code = glGetError();
const GLubyte *string;
if(code != GL_NO_ERROR)
{
string = gluErrorString(code);
fprintf( stderr, "OpenGL error: %s\n", string);
}
return code;
}
计算机图形学(第四版)-第一个画线例子- 读书笔记P30相关推荐
- 计算机操作系统 (第四版汤小丹老师) 复习笔记第一章
教材为西安电子科技大学 汤小丹老师 第四版 1.1操作系统目标和作用 1.目标 目前存在着多种类型的OS,不同类型的OS,其目标各有所侧重.通常在计算机硬件上配置的OS,其目标有以下几点: 方便性 便 ...
- 计算机图形学基础何云峰,计算机图形学基础第版课后习题答案陆枫何云峰.doc...
计算机图形学基础第版课后习题答案陆枫何云峰 第一章 绪论 概念:计算机图形学.图形.图像.点阵法.参数法. 图形的几何要素.非几何要素.数字图像处理: 计算机图形学和计算机视觉的概念及三者之间的关系: ...
- 计算机图形学第四次上机——鼠标回调图形界面交互实现
计算机图形学第四次上机实验 课程实验报告 目录 计算机图形学第四次上机实验 课程实验报告 一.实验目的 二.实验环境 三.实验内容 3.1绘制曲线 3.2绘制曲面 3.3颜色 3.4鼠标回调 四.实验 ...
- 计算机图形学 | 实验四:绘制一个球体
计算机图形学 | 实验四:绘制一个球体 计算机图形学 | 实验四:绘制一个球体 封装Shader 为什么要封装Shader 如何使用 绘制球模型 球面顶点遍历 构造三角形图元 开启线框模式 开启面剔除 ...
- 计算机图形学 第四章 光栅图形学
第四章 光栅图形学 计算机图形学 第四章 光栅图形学的相关内容,包括:直线段的扫描转换算法.圆弧的扫描转换算法.多边形区域填充.字符的生成.裁剪.反走样 等 Def 光栅显示器:一个像素矩阵(因此,要 ...
- 【计算机图形学】小白谈计算机图形学(四)二维三维图形变换—1
小白谈计算机图形学(四)二维三维图形变换-1 窗口与视图 二维图形的几何变换 平移变换 比例变换 旋转变换 二维图形变换的矩阵表示 三种变换 齐次坐标变换 原二维线性变换 齐次坐标法 复合变换 例题: ...
- 《Windows核心编程(第5版•英文版)》暨《深入理解.NET(第2版•英文版)》有奖书评/读书笔记征集活动
<Windows核心编程(第5版•英文版)>暨<深入理解.NET(第2版•英文版)>有奖书评/读书笔记征集活动 图灵公司自成立以来,得到了CSDN的很多专家和朋友的帮助.为了感 ...
- Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记
Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记 本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.A ...
- 计算机图形学——实验四 纹理映射实验
实验四 纹理映射实验 实验项目性质:设计性实验 所属课程名称:计算机图形学A 实验计划学时:3学时 一.实验目的和要求 掌握纹理映射的基本原理,利用VC++ OpenGL实现纹理映射技术. 二.实验原 ...
最新文章
- mysql5.6基于GTID主从复制设置
- 全球Python调查报告:Python 2正在消亡,PyCharm比VS Code更受欢迎
- 一个很好的Qt教程个人主页
- [C++] Variable storage space
- 【跃迁之路】【488天】程序员高效学习方法论探索系列(实验阶段245-2018.06.08)...
- 设计模式C++实现(16)——状态模式
- 跨语言平台的RSA加密、解密、签名、验证算法的实现
- gd动态曲线 php_PHP用GD实现折线图
- Golang——文件创建和写入、OpenFile追加写入、Open读取文件、ReadBytes缓冲区读取、os.Args、flag
- Basic64 编码解码
- 插入排序:直接插入排序希尔排序
- c语言中八进制转换成十进制数,C语言中的二进制、八进制、十进制之间的转换...
- cpuset(7) — Linux manual page
- Salesforce 中获取数据表字段的 picklist 的值
- 远程下载马bypass waf
- 【Python-3.3】字典中存储列表
- 华为摄像头搜索软件_华为Mate 40 Pro评测:硬件和软件表现都近乎完美
- 用pc浏览器打开手机页面
- excel两个表格数据对比_常简单又实用的Excel数据对比技巧
- 职场 | 如何说服上级?这里有三个故事