文章目录

  • OpenGL
    • 配置
    • 单位
    • 相关的库
      • lib和dll区别
      • 怎样理解跨平台性
    • 什么是回调函数
    • 命名规则
      • 为什么重定义?
    • 如何绘制图元(Primitive)
      • 基本图元
    • 去哪里查
    • 为什么有时候看不见图
    • 参考书

OpenGL

  • 全称是Open Graphics Library ,开放图形库,它是图形硬件的软件接口。
  • 主要功能:模型绘制及观察,RGBA颜色,光照应用,图像效果增强,位图和图像处理,纹理映射,实时动画以及交互技术
  • OpenGL是状态机
    OpenGL只是设置流水线的状态参数

配置

在VS2017版本中,只需将opengl库复制到相应文件夹,添加附加依赖项等操作可由直接下载NuGet程序包。(每个解决方案都需重新下载一遍)
配置详细步骤

单位

没有具体单位,视口大小只与视椎体窗口比例有比例关系

相关的库

OpenGL Library(核心库)
115个函数,前缀gl
gl.h OpenGL.lib openGL32.dll

OpenGL utility library(实用程序库)
43个函数 前缀glu
glu.h glu.lib glu.dll

以上两个库可以在任何OpenGL的实现平台上使用,接口跨平台

辅助OpenGL工具库freeglut
freeglut.h freeglut.h freeglut32.h freeglut32.dll
窗口相关功能 鼠标,键盘交互 右键菜单 高层建模glutSolidSphere

freeglut.h 包含了 glu.h gl.h

编程基本模式,大循环,由消息驱动(windows惯用模式)
main()
{
设置显示窗口
初始化窗口
创建窗口glutCreatWindow
设置一些列回调函数(我们要做的)
(display , myReshape,键盘鼠标响应函数)
启动主循环glutMainLoop();
}

lib和dll区别

参考

怎样理解跨平台性

什么是回调函数

不由自己调用,又系统响应消息调用的函数

glutDisplayFunc(display)接收到重绘消息时

glutReshapeFunc(myReshape)投影变换,视口变换

glutSpecialFunc(processSpecialKeys);回车 空格等特殊按键
glutKeyboardFunc(processNomalKeys);

基本过程:
按键-全局变量值减小-重绘

glutIdleFunc(display);
注释掉后发现按键时没有调用重绘消息
关闭窗口再打开发现重绘了,因为再打开窗口调用了重绘函数
定时调用display,为了及时响应

glutPostRedisplay();明确知道什么时候重绘,抛出消息,触发reDisplay

为什么OpenGL自己不在核心库提供这些功能?
鼠标,键盘与平台有关
尽量把与平台有关的东西剥离

命名规则

前缀: gl glu glut 属于哪个库
后缀: 234参数维数, b s l f d ub us ui 参数数据类型, v 以数组方式传递

为什么重定义?

  • 数据类型: GLbyte

为了跨平台,机器之间字节可能不同

glVertex3f(3.0f,4.0f,5.0f)

GLfloat v[3] = { 3.0f,4.0f,5.0f}; glVertexfv(v);

  • 四个颜色分量

RGBA 每个量都是0-1
ub-无符号数 0 -255

  • 特殊符号

GL_RGBA
GLUT_DOUBLE
代表一个值

  • 双缓存模式

(GLUT_DOUBLE | GLUT_RGBA )
按位或 双缓存模式

如何绘制图元(Primitive)

glBegin(GL_TRIANGLES);glColor3f(1.0,0.0,0.0);glVertex3f(x1,y,1,z1);glVertex3f(x2,y2,z2);glVertex3f(x3,y3,z3);
glEnd();//画红色三角形//Begin End之间,还可以设置颜色glColor 法相 glNormal//每个顶点颜色不一样
glBegin(GL_TRIANGLES);glColor3f(1.0,0.0,0.0);glVertex3f(x1,y,1,z1);glColor3f(0.0,1.0,0.0);glVertex3f(x2,y2,z2);glColor3f(0.0,0.0,1.0);glVertex3f(x3,y3,z3);
glEnd();

基本图元

OpenGL3.1之后 GL_POLYGON GL_QUADS GL_QUAD_STRIP被取消
用三角形表达就行

去哪里查

  • MSDN (以前微软支持OpenGL,现在不支持,所以是老版本)
  • Khronos
  • OpenGL 2.0 API中文索引(只有部分)

为什么有时候看不见图

openGL默认视点在原点(屏幕中心),所以不移动视点可能会导致看不见物体/在物体内部
一般用glTranslatef(0.0f 0.0f -Distance)将物体放远一些(视线方向是z轴负方向)
默认坐标系右手坐标系unity左手坐标系

投影在myReshape

参考书

  • GPU编程与CG语言之阳春白雪下里巴人
  • 《OpenGL超级宝典》
  • opengl基础

【计算机图形学】OpenGl基础相关推荐

  1. 【OpenGL】计算机图形学OpenGL基础

    前面几节是跟着B站视频学习的OpenGL基础操作,算是熟悉了一下环境,下面进入学习opengl中文教程网站,开始真正进入OpenGL的大门. 下面开始学习计算机图形编程,收获自己做出很酷的东西的喜悦. ...

  2. 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具

    计算机图形学 opengl版本 第三版------胡事民 第四章  图形学中的向量工具 一   基础 1:向量分析和变换   两个工具  可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正 ...

  3. Games101计算机图形学入门基础之一:向量变换、矩阵变换、视图变换、欧拉角与四元数

    Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 目录 Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 前言 向量 向量加 ...

  4. Games101计算机图形学入门基础之二:光栅化

    Games101计算机图形学入门基础之二:光栅化 引言 三角形的离散化 采样 走样 走样带来的瑕疵 反走样 先模糊再采样 傅里叶变换 低通滤波 卷积 多重采样抗锯齿(超采样) 深度缓存 可见性与遮挡( ...

  5. 计算机图形Opengl的实验报告,计算机图形学OpenGL实验四.doc

    计算机图形学OpenGL实验四 实验报告 学院(系)名称: 姓名学号专业班级实验项目实验四:场景漫游课程名称计算机图形学课程代码实验时间实验地点批改意见成绩教师签字:实验环境(软.硬件环境) 实验目的 ...

  6. 计算机图形学——OpenGL学习系列之绘制3D下的小桌子

    计算机图形学--OpenGL学习系列之绘制3D下的小桌子 做的一个小练习,主要用到了几何变换还有gl自带的一个绘制立方体的函数,顺便体会一下glPush和glPop的用法.另外,从2D到3D,开心到飞 ...

  7. 计算机图形学 opengl版本 第三版------胡事民 第三章更多的绘图工具

    opengl  计算机图形学 第三版   第二部分   第三章更多的绘图工具 3.1   概述 第2章中  我们绘图使用的是屏幕窗口的基础坐标系    以像素为单位 屏幕坐标从左下角x从0延伸到scr ...

  8. 计算机图形学应用基础考试,计算机图形学基础期末考试试题.docx

    计算机图形学基础期末考试试 题 一. 填空 1.将多 形外部一点 A 与某一点 B 用 段 接,若此 段与多 形 界相交的次数 ??????????, 点 B在多 形外部.若此 段与多 形 界相交的次 ...

  9. 计算机图形学OpenGL中的glLoadIdentity、glTranslatef、glRotatef原理,用法

    单位矩阵 对角线上都是1,其余元素皆为0的矩阵. 在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,我们称这种矩阵为单位矩阵. 它是个方阵,除左上角到右下角的对角线(称为主对角线)上的元素 ...

  10. 计算机图形学OpenGL中的glLoadIdentity、glTranslatef、glRotatef原理,用法 .(转)

    单位矩阵 对角线上都是1,其余元素皆为0的矩阵. 在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,我们称这种矩阵为单位矩阵. 它是个方阵,除左上角到右下角的对角线(称为主对角线)上的元素 ...

最新文章

  1. 3dsmax 让物体变透明
  2. 【PP操作手册】计划订单转生产订单
  3. 炼丹神器!模型调参这门“玄学”,终于被破解了
  4. atoi函数_每日一道 LeetCode (50):字符串转换整数 (atoi)
  5. SWIFT调用C语言
  6. 蓝桥杯 ADV-100 算法提高 第二大整数
  7. 044. asp.net主题之二为主题添加CSS样式和动态加载主题
  8. Nginx 下载 与 Windows 下访问集群 Tomat
  9. 两小时学会ajax,全程无废话,直接上代码,追求速度的来
  10. 启动Delphi2010就出现‘displayNotification: 堆栈溢出’
  11. CodeBlocks下载安装与SDL下载使用配置教程
  12. 【VRP问题】基于帝国企鹅优化算法求解冷链配送物流车辆调度优化研究(Matlab代码实现)
  13. 分布式智能电网-BMS蓄电池安全管理系统在各行业应用
  14. 结构为王——确定分析思路(数据分析方法论)
  15. TTime::FormatL详解
  16. 魔兽3的地图脚本文件简单分析图
  17. MySQL主外键设置
  18. 排序(一)冒泡排序法
  19. easy-table-vue+VueJs、SpringBoot+Mybatis实现MVVM模型前后台数据交互
  20. 删除文件夹里面的指定文件

热门文章

  1. Uniapp H5导出Excel
  2. srm供应商关系管理系统
  3. 二月天:输入年可以获取当前年的二月有多少天
  4. 经典排序算法之快速排序(二分法排序)
  5. 27岁没文凭,想努力自学编程,有机会成为程序员吗?
  6. 优秀程序员的18大法则-兄弟连IT教育
  7. 扶持初创企业成长 佳能再度携手优客工场升级轻松办公新体验
  8. 巧用3721上网助手,练就“踏网无痕”(转)
  9. 再谈TQ2440使用TFTP下载程序
  10. 含泪整理最优质行书字体素材,你想要的这里都有