![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opengl
文章平均质量分 91
Zach_z
0.005
展开
-
OpenGL学习之路1----打开一个窗口
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。先贴出源码:main.cpp:#include <gl/freeglut.h>...原创 2018-04-23 00:17:45 · 2294 阅读 · 0 评论 -
OpenGL学习之路13----相机控制(鼠标操作)
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程到目前为止,我们已经可以将一个物体以任意大小、任意角度和任意位置摆放在世界空间,相关博文链接: OpenGL学习之路6—-平移,旋转和缩放变换OpenGL学习之路9—-混合变换并且可以将我们的相机任意摆放在世界空间,相关博文链接: OpenGL学习之路11—-相机空间上一节通过键盘上的...原创 2018-04-28 01:14:18 · 4243 阅读 · 1 评论 -
OpenGL学习之路18---- 点光源
代码放在github上根据教程:ogldev一步步开始,记录学习历程之前学习了三个基于平行光的光照模型,相关博文如下:OpenGL学习之路15—-环境光OpenGL学习之路16—- 漫射光OpenGL学习之路17—- 镜面反射光平行光没有起点,通过方向向量来表示,不会随着距离增大而衰减点光源点光源即为有起点的光源,有衰减现象(即离光源越远光线越弱)。生活中常见的点光...原创 2018-05-12 17:31:41 · 4946 阅读 · 0 评论 -
OpenGL学习之路12----相机控制(键盘操作)
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程上一篇博文讲述了我们怎么把相机摆在三维空间的任意一个位置,想要了解的同学请移步上一篇博客: OpenGL学习之路11—-相机空间这次我们的目标是通过键盘上的方向键来移动相机。但是仅仅是改变相机的位置,而并没有改变相机的目标朝向(target向量)和竖直头顶方向(up向量)。一、键盘操作...原创 2018-04-27 17:55:57 · 3569 阅读 · 0 评论 -
OpenGL学习之路11----相机空间
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程之前已经学习了怎么将物体在3维空间里自由地缩放、旋转和平移,博客链接如下: OpenGL学习之路6—-平移,旋转和缩放变换OpenGL学习之路9—-混合变换也学习怎么把三维世界表现在我们屏幕这个2维平面上,博客链接如下:OpenGL学习之路10—-透视投影但是我们发现了一个问题,我们...原创 2018-04-27 01:18:17 · 3102 阅读 · 1 评论 -
OpenGL学习之路16---- 漫射光
代码放在github上根据教程:ogldev一步步从零开始,记录学习历程上一节学习了怎么渲染环境光,相关博文: OpenGL学习之路15—-环境光漫射光之前我们学习到的环境光忽视光线的方向,如果只有环境光,整个场景是被均匀照亮的漫射光跟环境光唯一的区别是漫射光依赖光线的方向,漫射光照射到物体上,被照射的一面要比背面亮漫射光的强度,与光线入射的角度有关,如果光线垂直物体,则...原创 2018-05-04 19:28:05 · 1702 阅读 · 0 评论 -
OpenGL学习之路17---- 镜面反射光
代码放在github上根据教程:ogldev一步步开始,记录学习历程之前完成环境光和漫射光的学习。环境光的计算只由光强来决定,场景中所有位置是同一亮度;漫射光的计算由光强和光的方向一同决定,相关博文如下:OpenGL学习之路15—-环境光OpenGL学习之路16—- 漫射光镜面反射光镜面反射光是当光线以一定的角度照射到物体表面后,从法线的另一侧堆成的角度反射出去的光线所...原创 2018-05-10 20:42:56 · 3688 阅读 · 0 评论 -
OpenGL学习之路10----透视投影
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程一、透视投影1.1 透视投影定义中心投影法: - 光线照射物体时,可在预设的地面或墙面上产生影子,根据这一自然现象,经科学的抽象总结,产生了投影法。 - 投射线通过物体,向选定的面投射,并在该面上得到图形的方法称为投影法 - 投射线汇交于投射中心的投影法叫做中心投影法中心投影法示...原创 2018-04-26 00:18:56 · 4332 阅读 · 1 评论 -
OpenGL学习之路9----混合变换
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程一、混合变换之前的教程中,学习了如何让物体平移、旋转和缩放,相关教程链接:OpenGL学习之路6—-平移,旋转和缩放变换1.1 一次性计算变换矩阵我们每进行一次变换都要左乘一次我们的变换矩阵,如果每进行一次变换(平移、旋转或者缩放)都在着色器里左乘一次变换矩阵,则会显得非常低效和臃...原创 2018-04-25 21:58:10 · 1442 阅读 · 0 评论 -
OpenGL学习之路15----环境光
代码放在github上 根据教程:ogldev一步步从零开始,记录学习历程环境光光照在3D图形领域中有许多模型,常见的模型有:环境光、慢射光、镜面反射光、点光源等等,这次只对环境光进行学习和实现环境光是一个没有光源、没有方向并且对场景中的所有物体产生相同的点亮效果的一种光环境光可以理解成为世界的基本光,即我们这个三维空间的基本亮度。环境光有两个属性: - 颜色:即灯光的颜色...原创 2018-05-03 23:04:52 · 2261 阅读 · 0 评论 -
OpenGL学习之路8----索引绘制
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程一、索引绘制我们之前使用glDrawArrays()函数绘制了一个三角形,属于顺序绘制,即从指定的偏移量依次扫描顶点缓冲区所有图元的每一个顶点。正如下图,我们绘制一个三角形只需要指定三个顶点即可,但是如果绘制两个三角形组成的一个平行四边形就需要六个顶点,而且会有两个顶点相重叠: 可以看到...原创 2018-04-25 19:10:01 · 1514 阅读 · 0 评论 -
OpenGL学习之路7----插值
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程一、插值插值是3D渲染管线中非常重要的部分,其实就是光栅化程序执行的从顶点着色器传过来的变量。光栅化程序对三角形三个顶点之间执行插值处理:对三个顶点之间的每个像素执行片元着色器(即fragment shader),片元着色器通过由顶点着色器传来的插值变量确定每个像素的颜色,光栅化程序将颜色存放...原创 2018-04-25 17:32:27 · 2331 阅读 · 0 评论 -
OpenGL学习之路6----平移,旋转和缩放变换
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程一、准备工作1.1 表示一个矩阵我们需要在程序中使用矩阵,我们需要用计算机程序语言来表示出来一个矩阵。我们用数组来表示一个矩阵,并且规定列填充优先,即一个4*4矩阵表示为:// 4 * 4 矩阵:// 0 4 8 12...原创 2018-04-25 00:17:22 · 6541 阅读 · 0 评论 -
OpenGL学习之路5----使用一致变量(Uniform Variables)
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程一、uniform 存储限制符在着色器运行之前,uniform修饰符可以指定一个在应用程序中设置好的变量,它不会在图元处理过程中发生变化uniform变量在所有可用的着色阶段之间都是共享的,它必须定义为全局变量任何类型的变量(包括结构体和数组)都可以设置为uniform变量着色器无法写入到...原创 2018-04-25 00:13:32 · 2345 阅读 · 0 评论 -
OpenGL学习之路14----纹理映射(Texture Mapping)
代码放在github上根据教程:ogldev一步步从零开始,记录学习历程本节的纹理学习还参考了教程: learnopengl和《OpenGL 编程指南》一、纹理1.1 纹理映射简介我们之前的OpenGL学习一直停留在绘制一个彩色的四面体:而现实世界物体的表面一般都呈现丰富特殊的颜色,并且在很小的图形上呈现多彩的变化,如果我们还是用计算机计算出一个个微小像素上的颜色再...原创 2018-05-01 00:58:29 · 13622 阅读 · 3 评论 -
OpenGL学习之路4----使用着色器(shader)
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程一、OpenGL 渲染管线这节相比上一节有了本质上的区别,OpenGL实际上是通过渲染管线(rendering pipeline),经过一系列的数据处理,将应用程序的数据转换到最终渲染的图像。在《OpenGL Programming Guide 9th》讲解了渲染管线,下图即是OpenGL 4...原创 2018-04-23 00:21:34 · 5201 阅读 · 0 评论 -
OpenGL学习之路3----画一个三角形
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程归一化坐标我们在屏幕上绘制图形的时候,是在一个归一化的空间里,即为下图可以看到绘制窗口左下角坐标为(-1.0,-1.0)到右上角坐标为(1.0,1.0)代码解释opengl_math.h:#ifndef __OPENGL_MATH_H#define __OPENGL_...原创 2018-04-23 00:20:06 · 1806 阅读 · 0 评论 -
OpenGL学习之路2----画一个点
代码放在github上本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程一、简述这一节比上一节《打开一个窗口》,多了需要使用glew库和3d数学库glew是OpenGL的扩展库,用于帮助C/C++开发者初始化扩展(OpenGL扩展功能)并书写可移植的应用程序。这个可以通过上网搜教程自行安装引用。3d函数库可以用网上的,也可以用源教程里的。这里我是根据需要开始自...原创 2018-04-23 00:18:44 · 2109 阅读 · 2 评论 -
OpenGL学习之路19---- 聚光灯光源
代码在github上根据教程:ogldev一步步开始,记录学习历程聚光灯光源聚光灯光源是结合了平行光方向的特性和点光源随距离衰减的特性,并且离光源越远,照亮圆形区域越大,即光源呈锥形。 在现实中一个例子为手电筒。如图所示,即为聚光灯光源的锥形效果: - L为光源方向 - 我们只想让光源照亮红色夹角之间的区域,即2α的角度 - V为光源到某个像素的向量 - 如果β大于α则...原创 2018-05-12 23:36:41 · 3158 阅读 · 2 评论