- 博客(130)
- 收藏
- 关注
原创 OpenGL第十一章 多光源
这一章是对前面所学光线的总结//MultipleLights#include "Shader.h"#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h"#include <glad/glad.h>#include <GLFW/glfw3.h>#include <glm/glm.hpp>#include <glm/gtc/matrix_transform.hpp>#include <g
2022-05-31 17:26:59 453
原创 OpenGl第十章 投光物
投射光源的物体就是投光物平行光(Directional Light)点光源(Point Light)聚光(Spotlight)平行光由于平行光所有光源都是平行的所以"光源和物体的相对位置"并不是那么重要,我们只需要定义一个"方向向量direction"来模拟平行光//fs#version 330 coreout vec4 FragColor;struct Material { sampler2D diffuse; sampler2D specular;
2022-05-30 17:30:00 221
原创 OpenGl第九章 光照贴图
//LightingMaps#include "Shader.h"#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h"#include <glad/glad.h>#include <GLFW/glfw3.h>#include <glm/glm.hpp>#include <glm/gtc/matrix_transform.hpp>#include <glm/gtc/type_ptr.h
2022-05-26 09:01:25 179 1
原创 OpenGL第八章 材质material
当描述一个表面时,我们可以分别为三个光照分量定义一个材质颜色(Material Color):环境光照(Ambient Lighting)漫反射光照(Diffuse Lighting)镜面光照(Specular Lighting)反光度(Shininess)通过为每个分量指定一个颜色,我们就能够对表面的颜色输出有细粒度的控制了。现在,我们再添加一个反光度(Shininess)分量,结合上述的三个颜色,我们就有了全部所需的材质属性了:ambient材质向量定义了在环境光照下这个表面反射的是什么颜色
2022-05-24 17:01:09 692
原创 OpenGL第七章 基础光照
这里的基础光照使用的是:冯氏光照模型冯氏光照模型分为三部分1环境光照(Ambient)把环境光照添加到场景里非常简单。我们用光的颜色乘以一个很小的常量环境因子,再乘以物体的颜色,然后将最终结果作为片段的颜色2漫反射(diffuse)我们知道两个单位向量的夹角越小,它们点乘的结果越倾向于1。当两个向量的夹角为90度的时候,点乘会变为0。这同样适用于θ,θ越大,光对片段颜色的影响就应该越小。那么此时我们就要一个法线方向和一个指向光源的方向(图形学里面光照方向指的是从每一个世界坐标出发指向
2022-05-24 10:43:59 564
原创 OpenGl第六章 摄像机
我们使用摄像机移动的时候需要使我们的世界坐标向摄像机移动的反方向移动造成一种我们摄像机在移动的错觉第一步和在unity和UE中使用摄像机一样我们需要定义一个摄像机的位置glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f);这张图很好的反应了我们的摄像机与坐标轴的关系 当我们需要向后移动的时候,我们是沿着Z轴的正方形移动的第二部摄像机方向:下一个需要的向量是摄像机的方向,这里指的是摄像机指向哪个方向。现在我们让摄像机指向场景原点:(0, 0, 0)。
2022-05-19 01:52:35 1225
原创 OpenGL第五章坐标系统
这一节对shader类添加了一些函数在顶点坐标里面使用model view projection变换需要依次乘以model view projection矩阵注意矩阵的连续乘法是从右到左结合的glm::mat4 model = glm::mat4(1.0f);//定义一个单位矩阵projection = glm::perspective(glm::radians(45.0f), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f);//perspe
2022-05-19 00:22:28 451
原创 OpenGL第四章变换
使用之前需要用到一个GLM库就是opengl的函数库下载之后在项目属性中配置如果配置出错就把他放到和你项目一个文件夹里面GLM下载提取码:984h要选父文件夹不要点进去选子文件夹glm不要选这个//Transformation.cpp//使用纹理单元#include "Shader.h"#include <GLFW/glfw3.h>#include <glad/glad.h>#include<iostream>#define STB_IMA
2022-05-16 23:57:42 124
原创 OpenGL第三章纹理 texture
#include "Shader.h"#include <GLFW/glfw3.h>#include <glad/glad.h>#include<iostream>#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h"float vertices[] = { // ---- 位置 ---- ---- 颜色 ---- - 纹理坐标 - 0.5f, 0.
2022-05-15 21:34:52 523
原创 Git指令
分支点使用:1创建分支注意使用本地仓库之前需要初始化git initgit branch + 分支名字例如:名为shader的分支git branch shader1.1切换分支git checkout + 分支名字例如:从shader切换到texturegit checkout texture1.2创建分支并切换git checkout -b [branch name]效果相当于前两步加起来git branch [branch name]git check.
2022-05-14 00:50:56 102
原创 GIT HUB报错指南
add报错无法吧项目add上去 只需要关闭VS即可git add .error: open("PuzzleGame/.vs/PuzzleGame/v16/Browse.VC.opendb"): Permission deniederror: unable to index file 'PuzzleGame/.vs/PuzzleGame/v16/Browse.VC.opendb'fatal: adding files failed
2022-05-13 21:06:21 118
原创 OpenGL的环境配置
第一步下载glad以及glfw点击下载glad选择核心模式版本选择3.3以上的点击下载glfw根据系统下载32位还是64位两个包下载解压出来之后就是这个样子打开VS新建一个空项目右键项目名称打开属性这里配置和平台选择所有配置 和所有平台 然后点击VC++目录 点击包含目录 打开之后选择编辑点击这个文件夹菜单 要勾选从父级货项目默认设置继承选择刚刚glfw文件夹里面的include文件夹 以及glad包里面的include文件夹之后点击这个库目录选择glfw包里面.
2022-05-13 20:59:30 5391 5
原创 OpenGl第二章着色器与更多属性以及创建shader类来管理着色器
#include <glad/glad.h>#include <GLFW/glfw3.h>#include<iostream>using namespace std;void processInput(GLFWwindow* window){ if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true);
2022-05-13 13:43:47 328
原创 OpenGL第一章基础三角形与索引
/*整个流程// ..:: 初始化代码(只运行一次 (除非你的物体频繁改变)) :: .. // 1. 绑定VAOglBindVertexArray(VAO);// 2. 把顶点数组复制到缓冲中供OpenGL使用glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);// 3. 设置顶点属性指针告诉GPU怎样使用这些顶点glVert
2022-05-13 09:59:23 415
原创 openGl报错
无法打开文件“opengl32.lib“随便找个教程配置结果报错无法打开文件opengl32.lib分析原因:opengl库和windows自带库一样出问题应该是VS配置有问题勾选继承input里也要勾选继承
2022-05-12 11:11:30 1020
原创 UE4 C++入门
仅此作为学习UE C++的笔记第一步创建在内容浏览器里面右键空白处新建C++类勾选显示全部类这里创建一个object类之后就可以在类里面创建蓝图了、创建一个蓝图就可以让我们写的C++代码成为一个蓝图默认生成的蓝图就是这个名字之后创建一个角色蓝图事件开始的时候 构建一个对象 这个MyMyObject是MyObject的子类这个set函数就是给我们刚刚创建的 MyObject 类的变量进行赋值 赋值以后就可以调用My Function函数赋值来源下面那个oute.
2022-05-12 00:37:49 1597
原创 CSDN各种格式和用法
目录:1当前页面跳转到对应目录当前页面跳转到对应目录跳转到标题1..........标题1<a href="#1" target="_self">跳转到标题1</a><h1 id="1">标题1</h1>
2022-05-11 16:14:57 261 1
原创 C++ 深拷贝与浅拷贝与拷贝构造函数
浅拷贝#include<iostream>using namespace std;//这样吧h1赋值给h2相当于是直接吧h1的地址直接复制一份给h2class house{public: house(int area) { this->Area = area; pKey = malloc(area);// 向系统申请分配指定()里面大小个字节的内存空间, } ~house() { free(pKey); pKey = nullptr; };.
2022-05-11 11:13:43 174
原创 模板函数和模板类
模板函数#include<iostream>using namespace std;#include<string>//普通函数调用的时候可以发生隐式类型转换// 一个typename的模板函数不行// 调用的时候指定类型可以发生隐式类型转换//函数模板 用typename和class关键字都行template<typename T1,typename T2>bool compare(T1& p1, T2& p2) { if (p1.
2022-05-07 17:30:08 338
原创 浅谈一下github的坑
点击your repositories 创建一个新仓库之后搜索Git download或者点击下面连接下载地址下载管理器安装完成之后找个磁盘新建一个文件夹创建本地仓库点击code下面有一个https地址复制下来右键GIT文件夹 点击 GIT Bash here接着将GitHub上的仓库克隆岛本地git clone https://github.com/13983375217/Cplusplus.git (https地址换成自己的仓库地址)之后就会出现一个新的文件夹 把你需要上传的
2022-03-22 17:22:22 1187
原创 算法 桶排序 并归分治法
#include<iostream>/* P7072 直播获奖 此题考查桶排序 t[score] 表示成绩为score的有多少人; for(遍历n个成绩){ 输入成绩score; 成绩为score的人++; 算出题目中当前计划获奖人数r; for(倒序遍历分数){ 累计人数,输出当前分数线; } }输入: 输出:200 300 400 400 400 500 400 400 300
2022-03-11 17:13:54 86
原创 Unity使用单例模式已经NavMeshAgent实现鼠标点击移动导航
为要添加移动的角色添加NavMeshAgent然后绑定脚本using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.AI;public class playerManager : MonoBehaviour{ // Start is called before the first frame update private NavMeshAgent .
2022-03-11 00:33:20 4368 2
原创 Unity天空盒子设置和基础灯光设置
选择new Lighting settings来创建一个新的光源这里可以选择是来自天空盒子的光源还是选择他自己本身的颜色之后选择使用GPU来渲染
2022-03-10 02:19:05 4323
原创 Unity绘制AI导航系统
点击windows AI NavigationObject窗口可以选择让物体成为Navigation Static 然后选择这个Navigation Area成为可行走的或者不可行走的选择的时候可以选择是否把子物体也变成Navigation Static这里我选择NO可以为人物设置最大爬坡高度 高于这个坡度的范围是不能爬的对于物体来说选择Obstacle让他成为障碍物选择Capsule使用裁剪模式裁剪边界BOX就是一个盒子大小...
2022-03-10 01:37:47 4815
原创 自定义通信协议上位机如何编码
比如这样一个通信协议 如何进行编码并发送&0xFF 就是和1111 1111进行与运算如果这个数本身只有八位小于255那么与完以后就是他本身如果这个数大于255就可以把他低地址截断如果这个数在255到65535之间还要存放高地址 则需要把这个数右移8位把高地址移过去,然后再和&0xFF与运算截取高八位,之后再看需要是高八位在前还是第八位在前这里是低八位在前 void MainWindow::sendInfomation(int Mx,int Mq){ QByteArr.
2022-03-03 11:00:15 452
原创 qt常用函数
读取ui数据显示数据text()QString ip=ui->ip->text();//读取ipunsigned short port=ui->port->text().toUInt();//读取portQHostAddress(ip)//存ipsetText和toPainText和append//toPainText显示纯文本append附件换行显示ui->caclulator->setText(QString("%1").arg(Msi, 0, 'f',
2022-03-01 09:37:43 1428
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人