![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
learnOpenGL学习笔记
文章平均质量分 80
个人自用学习笔记
NatsuKiiiiii
这个作者很懒,什么都没留下…
展开
-
(自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
光栅器会将一个图元的所有顶点作为输入,并将它转换为一系列的片段。顶点坐标理论上可以取任意值,但片段不行,因为它们受限于你窗口的分辨率。顶点坐标与片段之间几乎永远也不会有一对一的映射,所以光栅器必须以某种方式来决定每个顶点最终所在的片段/屏幕坐标。每个像素的中心包含有一个采样点(Sample Point),它会被用来决定这个三角形是否遮盖了某个像素。图中红色的采样点被三角形所遮盖,在每一个遮住的像素处都会生成一个片段。虽然三角形边缘的一些部分也遮住了某些屏幕像素,但是这些像素的采样点并没有被三角形。原创 2024-01-30 16:36:47 · 315 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-高级OpenGL-几何着色器
在顶点着色器和片段着色器中间还有一个几何着色器。几何着色器的输入是一个图元的一组顶点,在几何着色器中进行任意变换之后再给片段着色器,可以变成完全不一样的图元、可以生成更多的顶点。这是一个几何着色器的例子。我们不仅用这一帧的着色器输出,我们还会使用上一帧的着色器变量来进行更多变化。原创 2024-01-30 16:15:24 · 1172 阅读 · 0 评论 -
(自用)learnOpenGL-高级OpenGL-高级数据、高级glsl
这一节中,我们将讨论一些更有意思的缓冲函数,以及我们该如何使用纹理对象来储存大量的数据(纹理的部分还没有完成)。先来回顾一下之前有关的缓冲内存,OpenGL中的缓冲只是一个管理特定内存块的对象,没有其它更多的功能了。在我们将它绑定到一个缓冲目标(Buffer Target)时,我们才赋予了其意义。当我们绑定一个缓冲到GL_ARRAY_BUFFER时,它就是一个顶点数组缓冲,但我们也可以很容易地将其绑定到GL_ELEMENT_ARRAY_BUFFER。原创 2024-01-30 13:38:27 · 1204 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-高级OpenGL-立方体贴图
ok终于来到了立方体贴图了,在这里面我们可以加入好看的天空包围盒,这样的画我们的背景就不再是黑色的了!首先,立方体贴图和前面的sampler2D贴图一样,不过是6个2D组成的立方体而已。那么为什么要把6个组合在一起呢?立方体贴图可以通过一个方向向量来进行索引(或者说采样)。什么意思?我们类比一下,之前在一个2D面上我们通过uv纹理坐标来找到对应的纹理值对吧。这里也一样,不过是通过一个方向向量来获得。原创 2024-01-27 20:03:59 · 949 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-高级OpenGL-帧缓冲Framebuffers
我们在之前使用了很多缓冲了:颜色缓冲、深度缓冲、模板缓冲。这些缓冲结合起来叫做帧缓冲,其实也能从名字理解,每一帧屏幕都需要不断更新画面,对应的缓冲也需要更新。不过上面这些都是在默认的缓冲里面做的,现在我们可以自定义帧缓冲方式。原创 2024-01-27 17:10:04 · 1217 阅读 · 0 评论 -
(自用)learnOpenGL-高级OpenGL-面剔除Face Culling
一个立方体有6个面,但是我们最多只能看大3个面,所以如果我们可以丢弃那几个面,就可以加速我们的程序了。但是问题也来了,我们如何确定哪些面camera能够看到,哪些不能看到。我们现在规定:我们只画面向用户的面!什么意思?一个面他都有两面,一面面向用户,一面背对。我们只画面向用户的。或者说,我们现在的问题变成了如何规定正向面和背向面。在opengl中有个很聪明的技巧,就是分析顶点数据的。我们在定义一组三角形顶点的时候,肯定是要么顺时针表示,要么逆时针表示。原创 2024-01-26 17:01:16 · 177 阅读 · 1 评论 -
(自用)learnOpenGL学习总结-高级OpenGL-模板测试
可以想象一个场景,在之前的模板缓冲中,有箱子的地方都为1,其他都是0.然后现在画一个大一点的箱子上去。有1的地方就不画了,只在不为1的地方画,也就是边框之外的地方。思路很简单,这个过程将每个物体的片段的模板缓冲设置为1,当我们想要绘制边框的时候,我们主要绘制放大版本的物体中模板测试通过的部分,也就是物体的边框的位置。最后一个gl_replace,表示当深度和模板测试都通过的时候,那么我们希望将储存的模板值设置为参考值,参考值能够通过glStencilFunc来设置,我们之后会设置为1。原创 2024-01-25 18:13:02 · 1053 阅读 · 0 评论 -
(自用)learnOpenGL-高级OpenGL-深度测试
这一章提到了之前的深度函数,首先要开启深度测试,然后要在loop中及时清除深度通过开启深度测试,画面就会正常显示点与点的位置信息,里屏幕近的物体会覆盖远的物体。也就是z-buffer,用来确定一个片段是否在其他片段后方的。当深度测试(Depth Testing)被启用的时候,OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测试,如果这个测试通过了的话,深度缓冲将会更新为新的深度值。如果深度测试失败了,片段将会被丢弃。原创 2024-01-25 15:54:33 · 349 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-复习至模型加载
依次总结一下到目前为止学到的东西。原创 2024-01-25 14:08:58 · 367 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-高级OpenGL-混合
其实就是透明度的意思,在这之前一个图片png格式会有4个通道,最后一个通道就是透明度,他的颜色是由自己的颜色和后面的颜色一起确定的,一般来说 设置为1(完全由自己颜色决定),0.25的意思是自己决定25%。原创 2024-01-26 16:32:28 · 994 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-模型加载-mesh and model
这是一个可以可以把obj文件传入我们系统的库。原创 2024-01-23 17:00:22 · 398 阅读 · 1 评论 -
(自用)learnOpenGL学习总结-光照-Multiple lights
render pipeline原创 2024-01-19 14:37:06 · 397 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-光照-Light casters
在之前的basic lighting中,vertexShader中对于FragPos我写错了,不是简单的mat3(modelMat)* aPos,而是这样,这是因为,对于坐标变换来说,一定要在四元坐标中来变换不然就会错!所以,先变换再裁剪。其实在前面的课程中已经出现了光,但是在那个时候我们只定义了lightColor 和 lightPos,不过,这既不是点光源又不是平行光,在这一节会具体写清楚光该如何实现已经封装成类。原创 2024-01-18 22:15:43 · 366 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-光照-Color And Basic Lighting
从光照开始,我都会把每一次的学习内容都记录下来,不然的话,太久了真的会容易忘记的>_原创 2024-01-17 10:27:48 · 378 阅读 · 0 评论 -
(自用)learnOpenGL学习总结-光照-Materials and Lighting maps
MaterialsLighting maps原创 2024-01-17 20:10:26 · 335 阅读 · 0 评论 -
(自用)learnOpenGL(入门)基础总结
参考的资源有:learnOpenGL,b站傅老师,csdn其他有关文章。本文用于记录总结在学习OpenGL入门部分的思考。原创 2024-01-15 21:33:45 · 495 阅读 · 1 评论 -
(自用)learnOpenGL配置
包含目录 D:\Learnopengl\libraries\include。链接器 输入 附加依赖库 opengl32.lib glfw3.lib。库目录 D:\Learnopengl\libraries\libs。重建一个新的项目之后,把之前的cpp h等文件复制之后。c++ 常规中 附加包含目录 中导入 glm库。原创 2024-01-17 09:46:46 · 398 阅读 · 0 评论