自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 openGL学习-18(纹理-4-练习)

【代码】openGL学习-18(纹理-4-练习)

2023-08-27 19:37:22 107

原创 openGL学习-17(纹理-3)

最终输出颜色现在是两个纹理的结合。激活纹理单元之后,接下来的glBindTexture函数调用会绑定这个纹理到当前激活的纹理单元,纹理单元GL_TEXTURE0默认总是被激活,所以我们在前面的例子里当我们使用glBindTexture的时候,无需激活任何纹理单元。激活纹理单元之后,接下来的glBindTexture函数调用会绑定这个纹理到当前激活的纹理单元,纹理单元GL_TEXTURE0默认总是被激活,所以我们在前面的例子里当我们使用glBindTexture的时候,无需激活任何纹理单元。

2023-08-27 19:37:10 373

原创 openGL学习-16(纹理-2)

然而,目前只有基本级别(Base-level)的纹理图像被加载了,如果要使用多级渐远纹理,我们必须手动设置所有不同的图像(不断递增第二个参数)。我们使用GLSL内建的texture函数来采样纹理的颜色,它第一个参数是纹理采样器,第二个参数是对应的纹理坐标。我们之后生成纹理的时候会用到的图像的宽度和高度的。设置为GL_TEXTURE_2D意味着会生成与当前绑定的纹理对象在同一个目标上的纹理(任何绑定到GL_TEXTURE_1D和GL_TEXTURE_3D的纹理不会受到影响)。这里我们填0,也就是基本级别。

2023-08-27 19:36:46 213 1

原创 openGL学习-15(纹理-1)

多级渐远纹理背后的理念很简单:距观察者的距离超过一定的阈值,OpenGL会使用不同的多级渐远纹理,即最适合物体的距离的那个。注意不要和纹理坐标搞混,纹理坐标是你给模型顶点设置的那个数组,OpenGL以这个顶点的纹理坐标数据去查找纹理图像上的像素,然后进行采样提取纹理像素的颜色。,将放大过滤的选项设置为多级渐远纹理过滤选项之一。这样没有任何效果,因为多级渐远纹理主要是使用在纹理被缩小的情况下的:纹理放大不会使用多级渐远纹理,为放大过滤设置多级渐远纹理的选项会产生一个GL_INVALID_ENUM错误代码。

2023-07-30 16:07:25 110 1

原创 openGL学习-14(练习-2)

想一想:片段着色器的颜色的输出等于三角形。三角形左下角的坐标是多少?这是(-0.5f,-0.5f,0.0f)。由于xy值为负,它们被固定为0.0f的值。这种情况一直发生在三角形,因为从该点上的值将被再次正插值。0.0f的值当然是黑色的这就解释了三角形的黑色边。3.使用out关键字把顶点位置输出到片段着色器,并将片段的颜色设置为与顶点位置相等(来看看连顶点位置值都在三角形中被插值的结果。1.修改顶点着色器让三角形上下颠倒。

2023-07-30 12:30:55 56 1

原创 openGL学习-13(着色器-3)

着色器类储存了着色器程序的ID。它的构造器需要顶点和片段着色器源代码的文件路径,这样我们就可以把源码的文本文件储存在硬盘上了。除此之外,为了让我们的生活更轻松一点,还加入了一些工具函数:use用来激活着色器程序,所有的set…这些预处理指令会告知你的编译器只在它没被包含过的情况下才包含和编译这个头文件,即使多个文件都包含了这个着色器头文件。它是用来防止链接冲突的。在着色器主题的最后,我们会写一个类来让我们的生活轻松一点,它可以从硬盘读取着色器,然后编译并链接它们,并对它们进行错误检测,这就变得很好用了。

2023-07-16 17:31:34 60 1

原创 openGL学习-12(着色器-2)

注意,查询uniform地址不要求你之前使用过着色器程序,但是更新一个uniform之前你必须先使用程序(调用glUseProgram),因为它是在当前激活的着色器程序中设置uniform的。我们在片段着色器中声明了一个uniform vec4的ourColor,并把片段着色器的输出颜色设置为uniform值的内容。比如说,我们有一个线段,上面的端点是绿色的,下面的端点是蓝色的。我们有3个顶点,和相应的3个颜色,从这个三角形的像素来看它可能包含50000左右的片段,片段着色器为这些像素进行插值颜色。

2023-07-16 16:18:17 176 1

原创 openGL学习-11(着色器-1)

所以,如果我们打算从一个着色器向另一个着色器发送数据,我们必须在发送方着色器中声明一个输出,在接收方着色器中声明一个类似的输入。虽然着色器是各自独立的小程序,但是它们都是一个整体的一部分,出于这样的原因,我们希望每个着色器都有输入和输出,这样才能进行数据交流和传递。每个着色器的入口点都是main函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变量中。GLSL中的向量是一个可以包含有2、3或者4个分量的容器,分量的类型可以是前面默认基础类型的任意一个。着色器是使用一种叫GLSL的类C语言写成的。

2023-07-15 21:05:53 138 1

原创 openGL学习-10(练习-1)

练习

2023-07-12 22:38:54 44 1

原创 openGL学习-9(元素缓冲对象)

之后的绘制调用会一直以线框模式绘制三角形,直到我们用glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)将其设置回默认模式。最后一个参数里我们可以指定EBO中的偏移量(或者传递一个索引数组,但是这是当你不在使用索引缓冲对象的时候),但是我们会在这里填写0。同样,和VBO类似,我们会把这些函数调用放在绑定和解绑函数调用之间,只不过这次我们把缓冲的类型定义为GL_ELEMENT_ARRAY_BUFFER。更好的解决方案是只储存不同的顶点,并设定绘制这些顶点的顺序。

2023-07-11 22:20:13 83 1

原创 openGL学习-8(绘制三角形的完整代码)

此处添加了一些注释方便理解。

2023-07-09 15:44:31 213 1

原创 openGL学习-7(顶点缓冲对象,顶点数组对象)

(Vertex Array Object, VAO)可以像顶点缓冲对象那样被绑定,任何随后的顶点属性调用都会储存在这个VAO中。这样的好处就是,当配置顶点属性指针时,你只需要将那些调用执行一次,之后再绘制物体的时候只需要绑定相应的VAO就行了。OpenGL允许我们同时绑定多个缓冲,只要它们是不同的缓冲类型。从这一刻起,我们使用的任何(在GL_ARRAY_BUFFER目标上的)缓冲调用都会用来配置当前绑定的缓冲(VBO)。当我们打算绘制物体的时候就拿出相应的VAO,绑定它,绘制完物体后,再解绑VAO。

2023-07-09 14:46:57 510 1

原创 openGL学习-6(链接顶点属性)

一旦我们有更多的顶点属性,我们就必须更小心地定义每个顶点属性之间的间隔,我们在后面会看到更多的例子(译注: 这个参数的意思简单说就是从这个属性第二次出现的地方到整个数组0位置之间有多少字节)。自此,所有东西都已经设置好了:我们使用一个顶点缓冲对象将顶点数据初始化至缓冲中,建立了一个顶点和一个片段着色器,并告诉了OpenGL如何把顶点数据链接到顶点着色器的顶点属性上。由于在调用glVertexAttribPointer之前绑定的是先前定义的VBO对象,顶点属性0现在会链接到它的顶点数据。

2023-07-09 10:49:16 113 1

原创 openGL学习-5(着色器程序)

如果要使用刚才编译的着色器我们必须把它们链接(Link)为一个着色器程序对象,然后在渲染对象的时候激活这个着色器程序。就快要完成了,但还没结束,OpenGL还不知道它该如何解释内存中的顶点数据,以及它该如何将顶点数据链接到顶点着色器的属性上。就像着色器的编译一样,我们也可以检测链接着色器程序是否失败,并获取相应的日志。当链接着色器至一个程序的时候,它会把每个着色器的输出链接到下个着色器的输入。在glUseProgram函数调用之后,每个着色器调用和渲染调用都会使用这个程序对象(也就是之前写的着色器)了。

2023-07-05 21:20:11 107 1

原创 openGL学习-4(片段着色器)

两个着色器现在都编译了,剩下的事情是把两个着色器对象链接到一个用来渲染的着色器程序(Shader Program)中。片段着色器所做的是计算像素最后的颜色输出。代码和顶点着色器基本类似。

2023-07-03 21:05:31 219 1

原创 openGL学习-3(顶点着色器)

1.创建一个着色器对象,注意还是用ID来引用的。1.用着色器语言GLSL(OpenGL Shading Language)编写顶点着色器。为了能够让OpenGL使用它,我们必须在运行时动态编译它的源代码。暂时将顶点着色器的源代码硬编码在代码文件顶部的C风格字符串中。3.检测在调用glCompileShader后编译是否成功了。现代OpenGL需要我们至少设置一个顶点和一个片段着色器。

2023-07-02 20:46:15 654 1

原创 openGL学习-2

图形管线渲染步骤

2023-06-11 16:29:53 59 1

原创 openGL学习-1

【代码】openGL学习-1

2023-06-04 17:49:36 62 1

原创 使用pyflake批量进行静态代码检查的脚本(多线程版)

使用pyflake对多个文件夹内的所有.py文件进行静态代码检查。

2023-06-03 16:10:54 97 1

原创 python多线程threading学习

【代码】python多线程threading学习

2023-06-03 16:05:38 49 1

原创 基于知识图谱的古诗词推荐(python+爬虫+mysql+neo4j)(二)

将数据导入MySQL中为什么我不直接用neo4j存储呢?因为我一开始不会用neo4j。。。。并且像这种可以用一张二维表表示的数据,用关系数据库存储很方便。那为啥不用sql server呢?因为sql server 一直连不上。。。。之前我们已经得到相应的古诗数据,详情见基于知识图谱的古诗词推荐(python+爬虫+mysql+neo4j)(一)打开数据表,手动添加第一列id,用来充当主键确保自己电脑上已经安装了MySQL之后再来安装navicat是一个相当于pycharm的平台安装教程

2021-04-06 22:22:26 2552 12

原创 基于知识图谱的古诗词推荐(python+爬虫+mysql+neo4j)(一)

这里写自定义目录标题基于知识图谱的古诗词推荐数据准备功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入基于知识图谱的古诗词推荐本人小白,这是个人最近大创项目的成果,整理一下发出来。第一次写文数据准备https://www.xu

2021-04-05 21:47:26 3982 21

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除