自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

哲学天空的博客

技术积累的地方

原创 shader学习笔记七: shader的基本语法

vec4 在shader中的定义: struct vec4 { union { struct {float x,y,z,w;}; struct {float r,g,b,a;}; struct {float s,t,r,q;};...

2020-05-27 15:56:55 17 0

原创 shader学习笔记六: 访问法线数据

  法线分两种: 点法线、面法线。 关键代码: string vsCode = "varying vec4 outColor;\ void main()\ {\ outColor = vec4(gl_Normal,1);\ ...

2020-05-27 12:31:21 35 0

原创 shader学习笔记五: 访问纹理坐标数据

关键代码: string vsCode = "uniform vec4 _color;\ varying vec4 outColor;\ void main()\ {\ outColor = _color;\ ...

2020-05-27 12:10:40 58 0

原创 shader学习笔记四: 访问顶点颜色数据gl_Color

  现在opengl 版本里支持一个顶点 两个颜色 gl_Color、gl_SecondaryColor 关键代码: string vsCode = "varying vec4 outColor0;\ varying vec4 outColo...

2020-05-27 11:32:11 58 0

原创 shader学习笔记三: 访问顶点数据 gl_Vertex

  gl_Vertex表示传入进来的顶点 比如:三角形 正方体的顶点,gl_ModelViewProjectionMatrix 就是投影矩阵和模型矩阵乘积的结果,其中投影矩阵来自 glMatrixMode(GL_PROJECTION),模型矩阵来自 glMatrixMode(GL_MODELVIE...

2020-05-27 10:55:26 55 0

原创 shader学习笔记二: Verying关键字

  Verying关键字定义变量,主要用于从vs中传递数据到fs中。 关键代码: string vsCode = "uniform vec4 _color;\ varying vec4 outColor;\ void main()\ {\ ...

2020-05-27 10:27:38 14 0

原创 shader学习笔记一:shader运行原理及uniform关键字

shader运行原理   首先,opengl api函数输入一些数据,包括顶点数据、纹理数据、矩阵变换数据,这些顶点数据到"顶点处理阶段"。   “顶点处理阶段”: 图形流水线会调用 vertex shader(顶点shader),对顶点进行处理,有多少个顶点就调用多少次ver...

2020-05-27 09:57:57 17 0

原创 shader学习笔记: 前言

记录shader学习的知识点

2020-05-27 09:14:27 16 0

原创 C++ 对象模型学习笔记五: 拷贝构造函数语义

  测试验证编译器在什么情况下会帮助我们合成出拷贝构造函数,及编译器合成出来的拷贝构造函数又要干什么事情? 知识点 拷贝构造函数语义 在下面情况下,如果我们不写自己的拷贝构造函数,编译器就会帮助我们合成出拷贝构造函数来。 (1)、如果一个类T没有拷贝构造函数,但是含有一个类类型CTB的成员变量m_...

2020-05-19 21:11:21 22 0

原创 C++ 对象模型学习笔记四:分析obj目标文件-构造函数语义

  测试验证在什么情况下编译器自动为一个类创建“合成的默认构造函数”?及在一个类中定义多个其他类时,调用其他类的构造函数顺序? 知识点:  传统认识认为:如果我们自己没定义任何构造函数,那么编译器就会为我们隐式自动定义 一个默认的构造函数,我们称这种构造函数为:“合成的默认构造函数”  结论:“合...

2020-05-19 18:48:33 30 0

原创 C++ 对象模型学习笔记三: this指针调整

这里探索继承状态下对象的内存布局,及不同函数下的this指针的地址。 得出的结论:  1、派生类对象 ,它是包含 基类子对象的。  2、如果派生类只从一个基类继承的话,那么这个派生类对象的地址和基类子对象的地址相同。  3、但如果派生类对象同时继承多个基类,那么大家就要注意:  4、第一个基类子对...

2020-05-19 17:42:11 28 0

原创 C++ 对象模型学习笔记二: 对象结构的发展和演化

测试类中添加各种成员后 对象所占用的空间 测试代码如下: #include <iostream> using namespace std; class A { public: int a = 100; //非静态成员变量(普通成员变量) }; class B { public:...

2020-05-19 15:29:00 18 0

原创 C++ 对象模型学习笔记一: 类对象所占用的空间

测试验证各种类对象所占用的空间。 结论: (1): 空类占用1个字节内存空间。 (2): 成员函数不占用类对象的内存空间。 (3): 成员变量占用对象的内存空间。 总结:成员变量时包含在每个对象中的,是占用对象内存空间的,二成员函数,每个类只诞生一个(跟着类走),是不占用对象内存空间的。 测试...

2020-05-19 12:07:04 22 0

原创 openGL学习笔记四十一: PBO

PBO(Pixel Buffer Object):   opengl2.0之后才有的,PBO设计的目的就是快速地向显卡传输数据,或者从显卡读取数据,我们可以使用它更加高效的读取屏幕数据。   单个PBO读取屏幕数据效率大概和 glReadPixels() 差不多,双PBO交换读取效率会很高。原因...

2020-05-14 22:08:38 45 0

原创 openGL学习笔记四十:获取屏幕数据并保存为图片

   获取当前屏幕、FBO、PBuffer中的数据。 相关函数: glReadPixels(0, 0, WIDTH, HEIGHT, GL_RGBA, GL_UNSIGNED_BYTE, data); //读取屏幕区域数据 到data数组中 代码如下: FrameBufferObject.h 文...

2020-05-14 18:38:22 98 0

原创 openGL学习笔记三十九: FBO

PBuffer:   是opengl的扩展,在opengles 中称作surface,在一个应用程序中建立多个opengl对象,主要用途:离屏渲染(离开屏幕进行渲染),建立一个PBuffer就是建立一个opengl对象,这个opengl对象是在后台绘制,并不把数据绘制到我们的窗口上。 Frame ...

2020-05-14 17:57:45 35 0

原创 QT 使用qcustomplot库

VS2017+QT5.12+qcustomplot

2020-05-12 22:23:27 46 0

原创 openGL学习笔记三十八: 绘制加雾特效多纹理逼真地图

  从外部Terrain.raw 文件读取高度数据, 法线,添加多纹理支持,形成更真实地图。 涉及函数 glEnable(GL_FOG); //开启雾特效 glFogi(GL_FOG_MODE, GL_LINEAR); glFogfv(GL_FOG_COLOR, fogColor); g...

2020-05-10 21:51:39 74 0

原创 openGL学习笔记三十七:绘制简单地图

  地形本质上由一个个顶点(x,y,z)组成多个三角面连接而成。 地形有两种来源:   1.美术使用3dmax、maya、bleader工具,画点、线、面,导出三维模型,然后在游戏中加载进来,进行绘制。   2.软件自身使用数据生成,如通过一张高度图生成。 涉及函数 opengl 绘制网格 ...

2020-05-10 21:40:45 81 0

原创 c++ 使用XML解析库 TinyXML2

开源库TinyXML2简介及使用

2020-05-07 11:34:16 36 0

原创 QT5 中使用全局快捷键

全局快捷键:就是窗口没有处于最前端时,也响应快捷键。 QT5中处理全局快捷键的库:MyGlobalShortCut 下载地址: 使用方法: //引入头文件 #include <MyGlobalShortCut/MyGlobalShortCut.h> .... //全局快捷键 //取色...

2020-05-07 11:25:29 40 0

原创 QT中使用QSS进行界面美化及很好的QSS样式表

一、使用QSS进行界面美化 在qt编辑器中选择窗口----> 改变样式表 —> 输入qss样式代码,可以控制qss对应窗口控件样式,右击 某个控件----> 改变样式表 —>输入qss样式代码,可以控制这个控件的样式。如下: 原来的界面: 加入QSS样式的界面: 二、...

2020-05-03 18:34:39 266 0

原创 游戏编辑器开发三: QT中使用glew进行opengl开发

  不用Qt自带的QtOpenGL,而是在QtWidgets窗口中嵌入opengl (glew) 方式,有两个原因: 一、qt自带的opengl有bug 。 二、opengl 扩展功能可能不全,所以使用glew。 一、使用opengl方法: 首先创建opengl 设备上下文 程序,再创建一个OGL...

2020-05-03 17:35:53 98 0

原创 openGL学习笔记三十六:Shader

一、shader:   是一段程序,分为顶点着色、片元着色两种。分别在顶点着色阶段和片元着色阶段使用。 二、相关函数: // 1. 创建一个顶点shader对象 vertex = glCreateShader(GL_VERTEX_SHADER); // 给shader vertex对象 指定...

2020-05-03 17:17:05 164 0

原创 openGL学习笔记三十五:材质

一、材质: 二、相关函数: GLfloat mat_yellow[4] = {0.7, 0.6, 0.1, 1}; GLfloat mat_white[4] = {1,1,1, 1}; GLfloat mat_ambient[4] = {0.5,0.5,0.5, 1}; GLfloa...

2020-05-03 12:48:49 32 0

原创 openGL学习笔记三十四:光照、光源

一、 光照: 四种光照类型: 放射光(自发光) emissive : 没有光照的情况下物体自身会发射光 如:夜明珠 环境光 ambient : 即使夜里房间灯全部关掉,还是有微弱光(月光)让你能看见房间物体轮廓,这就是环境光 漫反射光 镜面...

2020-05-03 12:34:26 53 0

原创 游戏编辑器开发二: 创建QT界面项目

1. 新建项目 vs 新建项目 —> Qt —> Qt GUI Application 2.添加界面 项目—> 添加 —> Add Qt Class 点击finish 即可完成。

2020-04-29 22:47:18 66 0

原创 游戏编辑器开发: 前言

记录游戏编辑器开发。 一般使用C# winform WPF,及C++ QT 进行开发

2020-04-29 22:07:36 47 0

原创 游戏编辑器开发一: QT开发环境配置

  QT是跨平台C++图形用户界面应用程序开发框架,可以使用其开发丰富、复杂的界面程序。 官方网址为:https://www.qt.io/ 安装及使用 环境:win7 VS2015 1. 下载Qt: 地址:https://download.qt.io/archive/qt/ 因为我用VS2015...

2020-04-29 21:52:17 78 0

原创 openGL学习笔记三十三: 摄像机优化-矩阵代替

  前面说过:opengl 本身没有提供摄像机接口,其实也没有必要提供,因为物体位置时通过投影矩阵、观察矩阵、模型矩阵,运算得到,我们可以通过数学公式计算得到投影矩阵、观察矩阵,然后和模型矩阵相乘。下面我们通过一个例子,不依赖opengl,而是通过数学库得到相应的矩阵和模型矩阵相乘,效果和使用gl...

2020-04-28 16:36:27 33 0

原创 openGL学习笔记三十二: 摄像机

  严格来说 opengl 本身没有提供摄像机接口,而是在glu库中提供了gluLookAt 这个接口,所以摄像机这个概念在三维库opengl中并没有,实际是通过对矩阵的控制来实现摄像机。 相关函数: //gluLookAt 函数 本质是通过参数产生一个观察矩阵 然后和 被观察模型矩阵相乘 得到...

2020-04-28 15:44:20 37 0

原创 引擎开发五: Assimp库及使用

  Assimp :全称为Open Asset Import Library,这是一个模型加载库,可以导入几十种不同格式的模型文件(同样也可以导出部分模型格式)。只要Assimp加载完了模型文件,我们就可以从Assimp上获取所有我们需要的模型数据。Assimp把不同的模型文件都转换为一个统一的数...

2020-04-27 18:47:03 76 0

原创 引擎开发四: SFML库及使用

  SFML 是多媒体库,它为PC的各个组件提供简单的界面,用来简化游戏和多媒体应用程序的开发。 主要由五个模块组成,分别是:系统,窗口,图形,音频和网络。   SFML 是跨平台的,通过 SFML,你的应用程序可以在最常见的操作系统上进行编译和运行:Windows,Linux,macOS以及An...

2020-04-27 12:42:26 110 0

原创 引擎开发三: FreeImage库及使用

  FreeImage 是一款免费的、开源的、跨平台(Windows 、Linux 和Mac OS X )的,支持20 多种图像类型的(如BMP 、JPEG 、GIF 、PNG 、TIFF 等)图像处理库。 安装及使用 环境:win7 VS2015 1. 下载FreeImage : 地址:http...

2020-04-27 11:30:44 68 0

原创 引擎开发二: stb_image库及使用

  stb_image 是一个简单易用的图像解码库。 安装及使用 环境:win7 VS2015 1. 下载stb_image : github地址:https://github.com/nothings/stb 2. opengl项目配置:   因为stb_image库实现都写在头文件中,不需要...

2020-04-27 10:34:12 80 0

原创 引擎开发一: glm库及使用

  glm是一个发展了十年以上的数学库,opengl没有内置的数学库,一般引擎开发都使用glm库作为数学库。 官方网址为:https://glm.g-truc.net/ 安装及使用 环境:win7 VS2013 1. 下载glm: github地址:https://github.com/g-tru...

2020-04-27 10:07:23 64 0

原创 引擎开发: 前言

记录游戏引擎开发

2020-04-27 09:59:30 90 0

原创 向量

向量:   是一类既有大小,又有方向的量,标量只有大小,没有方向。   几何上,用带有箭头的线段表示向量。   为了表示向量,可以将向量进行平移,向量的尾部移到坐标原点,此时,向量处于标准位置,可以用向量头部的位置表示向量。 特殊向量:   在三维向量中有4个特殊的向量。   第一个称之为零...

2020-04-20 20:44:23 52 0

原创 3D理论原理

模型矩阵 观察矩阵 投影矩阵 奠定了三维理论的基础。   vertex data(顶点位置数据 x,y,z)经过 model matrix(模型矩阵)变换,即对顶点位置数据 x,y,z 进行平移、旋转、缩放,得到新的顶点位置,然后根据眼睛的位置进行view matrix(视图矩阵)变换,又得到一...

2020-04-20 20:09:20 52 0

原创 openGL学习笔记三十一: 索引缓冲区(IBO)

IBO:   索引缓冲对象,一个立方体就8个顶点,但我们之前绘制时传输6个面,24个顶点,这些顶点很多是重复的,影响传输效率,而且占用内存也较高。   所以引入IBO机制。IBO存储顶点索引,绘制三角形时根据IBO索引去顶点缓冲区对象中取顶点数据进行绘制,从而达到重复利用顶点的目的,减少传输顶点数...

2020-04-20 16:34:06 51 0

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