
OpenGL蓝宝书
文章平均质量分 94
蓝宝书第五版
两水先木示
有时候,你不知不觉就完成了一个BUG!
展开
-
【OpenGL】蓝宝书第五章——基础纹理
载入纹理图形 glTexImage/glTexSubImage设置纹理贴图参数 glTexParameter管理多重纹理 glGenTextures/glDeleteTextures/glBindTexture生成Mip贴图 glGenerateMipmap使用各向异性过滤 glGetFloatv/glTexParameter载入压缩纹理 glCompressedTexImage/glCompressedTexSubImage纹理贴图 texture mapping纹理只是一种能够应用到.原创 2021-03-24 23:37:39 · 1004 阅读 · 0 评论 -
【OpenGL】蓝宝书第七章——纹理高级知识
矩形纹理GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D是我们所了解到的纹理目标,而矩形纹理是GL_TEXTURE_RECTANGLE,它与GL_TEXTURE_2D类似,区别在于不能进行Mip贴图,glTexImage2D只能加载第0层,而且纹理坐标并不是在[0,1]范围内的,而是对像素寻址,如(5,19)则代表从左边数起第六列,从上面数起第20行的像素,纹理坐标不能重复且不支持纹理压缩。此种纹理效率更高、支持更好。加载矩形纹理bool LoadTGATex原创 2021-04-06 23:41:52 · 1075 阅读 · 0 评论 -
【OpenGL】蓝宝书第三章——基础渲染
正投影GLFrustum::SetOrthographic(GLfloat xMin, GLfloat xMax, GLfloat yMin, GLfloat yMax, GLfloat zMin, GLfloat zMax);透视投影GLFrustum::SetPerspective(float fFov, float fAspect, float fNear, float fFar);属性对应UnityShader的顶点着色器输入结构体的数据,例如 VERTEX COLOR...原创 2021-03-15 00:54:02 · 414 阅读 · 0 评论 -
【OpenGL】蓝宝书第四章——基础变换:初识向量/矩阵
目录3D数学向量点乘叉乘矩阵理解变换视觉坐标视图变换模型变换模型视图的二元性投影变换视口变换模型视图矩阵矩阵构造单位矩阵平移旋转缩放综合变换运用模型视图矩阵3D数学向量typedef float M3DVector3f[3];typedef float M3DVector4f[4];声明初始化四分量: M3DVector4f vVertex = { 0.0f, 0.0f, 0.0f, 1.0f };三分.原创 2021-03-20 23:50:10 · 758 阅读 · 1 评论 -
【OpenGL】蓝宝书第六章——跳出“盒子”:非存储着色器
OpenGL着色语言(GLSL)类似C语言,由OpenGL实现进行编译和连接,并且是完全在图形硬件中运行。至少需要两个着色器:顶点着色器和片段着色器,可选的是几何着色器(第十一章介绍)。可选三种方式向顶点着色器传递数据:①参数,针对每个顶点而言的;②统一值,是针对整个顶点数据批次的常量(所以针对每个顶点是一致的);③纹理数据。可为片段着色器设置统一值和纹理数据。将顶点属性发送到片段着色器毫无意义,因为片段着色器只是用来在图元进行光栅化后对片段进行填充的。不过,每个顶点数据都可通过顶点程序传递到片原创 2021-03-30 00:24:53 · 398 阅读 · 0 评论 -
【OpenGL】蓝宝书第八章——缓冲区对象:存储尽在掌握
前言缓冲区对象概念允许应用程序方便地将数据从一个渲染管线移动到另一个渲染管线,以及从一个对象绑定到另一个对象,它可以在无需CPU介入情况下完成。帧缓冲区对象能真正让我们控制像素,而不受操作系统环境影响,例如离屏渲染等技巧。可以说片段着色器对哪些像素去哪里有了最终的控制权。缓冲区缓冲区能够保存顶点数据、像素数据、纹理数据、着色器处理的输入或不同着色器阶段的输出等。缓冲区保存在GPU内存中,它们提供高速和高效的访问。在OpenGL有缓冲区对象之前,应用程序只有有限的选择可以在GPU中存储数据。在原创 2021-04-11 21:44:09 · 2030 阅读 · 0 评论 -
【OpenGL】蓝宝书第九章——高级缓冲区:超越基础水平
获得数据介绍所有新的数据格式和使用方法,并介绍一些用来访问那些将要进行性能优化的缓冲区的重要方法。映射缓冲区在C++中,用glBufferData来进行开辟缓冲区空间和填充内容,如果想修改缓冲区内容,可用glMapBuffer和glMapBufferRange。glMapBufferRange是提供一个指向内存的指针,可用这个指针直接读取或更新某个缓冲区的数据,尽量避免读取和写入同时进行的情况。(注意:修改的是已经在GPU内存中的数据,但不会阻止GPU工作)void *glMapBuffe原创 2021-04-18 23:12:13 · 1213 阅读 · 0 评论 -
【OpenGL】蓝宝书第十一章——高级着色器应用
高级顶点着色器使用GPU通过变换反馈进行数据再循环,从而实现物理模拟。顶点着色器除了对顶点进行空间转换之外,还能够在一个循环中将结果进行循环传递,并在每一次循环过程中进行迭代和更新。这些数据不必是位置,顶点着色器的结果也不必进行直接渲染。下面将讲解几个示例来说明。在顶点着色器中进行物理模拟建立一个弹簧和物块组成的网状物的物理模拟,每个顶点代表一个重物,与其他4个相邻的重物通过弹性绳进行连接。示例会对顶点进行反复迭代,用一个顶点着色器对每一个顶点进行处理。我们会使用大量高级特性,示例中使用了一个T原创 2021-04-30 22:40:13 · 1477 阅读 · 0 评论 -
【OpenGL】蓝宝书第十章——片段操作:管线的终点
片段着色器之后的逐片段操作流程对一个虚拟片段进行多重采样操作、模板测试、深度缓冲区测试、混合、抖动和逻辑操作等操作。逐像素操作:输入片段->裁剪测试->多重采样操作->模板测试->深度缓冲测试->混合->逻辑操作->抖动->到帧缓冲区。裁剪——将几何图形剪切到希望的大小决定是否将片段放在一个可渲染区域中裁剪出来的区域中。裁剪操作是在窗口坐标中执行的,即片段有一个(0,0)到(width,height)范围的窗口坐标,其中width和height原创 2021-04-24 22:52:26 · 789 阅读 · 0 评论 -
【OpenGL】蓝宝书第十二章——高级几何图形管理
查询功能——收集OpenGL管线相关信息GPU查询对象是否被绘制在可视范围内准备查询void glGenQueries(GLsizei n, GLuint *ids);创建查询对象(或查询对象数组)n为个数,ids是查询对象指针。GLuint one_query;GLuint ten_queries[10];glGenQueries(1, &one_query);glGenQueries(10, ten_queries);若创建失败内容将是0,可安全校验是否创建成功原创 2021-05-02 01:07:59 · 1496 阅读 · 1 评论