08 2020 档案
摘要:有了光照,就应该有阴影。所以,今天我们来整个阴影。 说到阴影,我们自然而然地会想到初中里,关于阴影的产生原因:光在均匀介质中沿直线传播。 所以,我们暂且把我们的光视为平行光,从纹理角度来考虑阴影。一个显而易见的想法是: 判断一个点距离光源的远近: 设此点为A,设光源为L,设A与L距离为x,设射线LA
阅读全文
摘要:一、帧缓冲 什么是帧缓冲?可以理解为GPU在渲染前预先准备的一个区域,之后将把它渲染成屏幕上的像素。但是,帧缓冲本身并不储存数据,仅仅储存指向数据的指针。所以,帧缓冲需要绑定几个缓冲区,我们特殊地称它们为附件:颜色附件,深度缓冲附件,模板缓冲附件。需要注意的是,一个完整的帧缓冲必须包括一个颜色附件。
阅读全文
摘要:一、初中总结 在初中生活中,我收获良多。 在学习上,我努力学习各门功课,合理安排时间,劳逸结合,上课认真听讲,回家及时巩固复习,掌握科学的学习方法,利用各种资源拓宽我的知识面。 在体育方面,我经常锻炼,跑步在班级里是前几名。在学习之余我还会打篮球,培养自己的坚强意志和坚韧品格,努力做到身体健康。身体
阅读全文
摘要:这一节主要讲光照计算和法线贴图。在此之前,先介绍一下顶点索引——它可以让我们重复利用“相似”的点,使用代码也很简单。 首先和之前一样填充一个顶点索引: GLuint elementbuffer; glGenBuffers(1, &elementbuffer); glBindBuffer(GL_ELE
阅读全文
摘要:在学会了加载顶点,矩阵变换之后,是时候开启纹理之旅了! 首先,要知道纹理是如何被贴到3D模型上去的。这里要涉及到一个概念,就是UV坐标。简单地来说,UV坐标是贴图的坐标,可以理解为一个二维坐标系,纵坐标是V,横坐标是U,只不过这个坐标系里的每一个点代表一个像素罢了(这个坐标系的右上角是(1,1),只
阅读全文
摘要:由于这里的知识点很细碎又不是很多,所以我边学OpenGl一边把需要用到的GLSL知识写上去。 0.概念和初始化: 着色器分为顶点着色器(Vertex Shader)和片元着色器(Fragment Shader),语法类似C++,OpenGL对每一个顶点都执行一次顶点着色器,对所有片元执行片元着色器(
阅读全文
摘要:唉,虽然学会了,但是懒得做笔记呀。俗话说好记性不如烂笔头,防止遗忘我还是记一记吧。 一、矩阵 众所周知,三弟3D图形学中很重要的就是线性代数,我们进行各种变换的时候就要用到神奇的矩阵。 (不禁想吐槽一句,这个神奇的东西到底是怎么想出来的。。) 相信矩阵乘法大家都了解,下面讲几种特殊的矩阵。 1.平移
阅读全文
摘要:第一个OpenGL程序 现在,让我们画一个三角形。 之前说过,我们用GLFW来简化繁琐的创建窗口的操作。 所以第一步,让我们创建窗口: // Initialise GLFW if( !glfwInit() ) { fprintf( stderr, "Failed to initialize GLFW
阅读全文
摘要:没事干总要学点东西,这个系列的文章既是我的笔记,又是一篇教程(给我自己的教程),主干内容参考一篇国外教程,教程很粗略,但是代码不错,所以我借着它的脉络,补充网上的资料来扩充内容,每一句话都要理解是什么意思,还有实现的原理。不定期更新,国外教程网址在文末,有兴趣的同学可以去看看。 一、OpenGL简介
阅读全文