- 博客(1259)
- 资源 (2)
- 收藏
- 关注
原创 OpenGL基础13:第一个正方体
我们已经进入了3D世界了,想办法生成一个最简单的3D图形:正方体吧一、生成一块箱子接上一章的代码,其实如果前面12章都完全理解了,应该可以直接写出生成正方体的代码(不就是多5个面嘛)为了简单化,我们保留纹理,把颜色这一属性也去掉,除此之外顶点缓冲也不用了,直接拉36个顶点出来代码如下(当然也顺便换了个纹理):#include<iostream>#include<opengl/glew.h>#define GLEW_STATIC#include<...
2020-05-21 19:47:46 1419
原创 OpenGL基础12:进入3D世界
前置:OpenGL基础11:空间一、坐标系我们都学过坐标系,根据z轴的方向,一般有两种不同的坐标系表示方法:其中拇指是x轴正方向,食指是y轴正方向,中指是z轴正方形OpenGL约定是右手坐标系,而在标准化设备坐标系(NDCSpace)中OpenGL使用的是左手坐标系还记得上一章的这个公式嘛:再看看下面的这个顶点着色器,是不是有种亲切感#version 330 corelayout (location = 0) in vec3 position;layout ...
2020-05-21 16:49:03 2010
原创 OpenGL基础11:空间
一、局部空间即对象被创建时,所在的空间例如我们用模型软建(ZBrush、Blender、3DMax等)创建了一条龙的模型,那么它在创建的时候,就处于它的局部空间内,一般来讲,模型的中心即局部空间的中心(0, 0, 0),如果我们这里说龙的眼睛的坐标为(2.2, 1.5, -2),那么也就是这个龙的眼睛相对于自身的中心,偏移量为(2.2, 1.5, -2)就如下图,一个球体和一个正方体,它们都处于各自的局部空间,并且中心都在(0, 0, 0)的位置二、世界空间如果我们...
2020-05-21 11:44:27 1049
原创 OpenGL基础10:变换
必须掌握的前置技能:https://blog.csdn.net/Jaihk662/article/details/103811465(向量与矩阵)其实也不难,也就是一些线性代数的基本知识,暂时只需要理解到这种程度就好,后面可以再说一、GLM库和SOIL一样,GLM也是一个openGL的库,里面存着各种数学公式和算法OpenGL环境配置(超全整合版)GLM库也可以从这篇文章中的链接中下载到,有个叫做glm-0.9.9.8的文件夹就是了,打开后将其中整个glm文件夹丢到VS的include...
2020-05-15 16:05:00 1255
原创 OpenGL基础9:纹理
其实上一章就是在讲纹理了,不过上一章的目的仅是在想办法生成一张有纹理的矩形一、纹理坐标与环绕方式为了能够把纹理映射(Map)到三角形上,我们需要指定三角形的每个顶点各自对应纹理的哪个部分,每个顶点都会关联着一个纹理坐标(Texture Coordinate),用来标明该从纹理图像的哪个部分采样,之后在图形的其它片段上进行片段插值(Fragment Interpolation)我们很长的一段时间只需要考虑2D的图象,2D纹理坐标范围为(0~1),起始于左下角(0, 0),终止于右上角(1, ...
2020-05-13 19:55:47 877
原创 OpenGL基础8:SOIL库
一、SOILSOIL是简易OpenGL图像库(Simple OpenGL Image Library)的缩写,它支持大多数流行的图像格式,关于SOIL的介绍应该很多,这里就不说了,我们先装上OpenGL环境配置(超全整合版)SOIL库可以从这篇文章中的链接中下载到,有个叫做imple OpenGL Image Library的文件夹就是了,打开后将其src文件夹中的SOIL.h放到老位置(C:\Program Files (x86)\Microsoft Visual Studio\2019\C...
2020-05-11 20:23:53 12118 3
原创 OpenGL基础7:彩色三角形
一、彩色三角形前面顶点属性只用了位置属性,现在可以尝试给顶点加上颜色属性GLfloat trangleY[] ={ -0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};这些属性更新到...
2020-05-07 20:01:27 1247 2
原创 OpenGL基础6:着色器
如果想要完整的代码,可以用上一章最下面那份代码,然后进行局部替换就OK了一、着色器结构一个简单的着色器如下:#version 3.4 //版本号in type name1 //输入数据out type name2 //输出数据uniform type name3 //全局属性int main(){ // 处理输入并进行一些图形操作...
2020-05-07 12:10:43 717 4
原创 OpenGL基础5:第一个正方形
绘制一个正方形真的很简单,很显然,两个三角形铺在一起就可以了一、绘制正方形其实如果真的完全理解了前面的知识, 那么理论上不需要教程,即可绘制出正方形了,就如上所说,两个三角形只有顶点的位置不同而已……那么问题来了,绘制一个正方形,需要多少个顶点呢?按照如上的方法,应该是需要6个,然而很明显,只需要4个即可,有两个顶点它们在同一个位置,如果重复绘制会多出50%额外的开销,所以我们的...
2020-04-22 12:05:35 1071
原创 OpenGL基础4:最基础的单元 —— 三角形
在刚学 OpenGL 的时候千万不要沉迷细节,后面你会慢慢懂,又或者说:放弃前置:OpenGL基础1:最简单的OpenGL例子一、最简单的着色器前面讲过,如果我们打算做渲染的话必需要配置顶点和片段着色器,因此这里不得不先提前了解一下着色器最简单的顶点着色器:#version 330 corelayout (location = 0) in vec3 position;...
2020-04-17 17:26:46 738
原创 OpenGL基础3:渲染管线
一、渲染与着色器渲染(render)本质上就是将图形显示在屏幕上的这个过程,最终的目的就是将3D的世界用 2D 的像素点表示出来(UI 为特例),这也是渲染管线(Graphics Pipeline)所负责管理的,图形渲染管线可以被划分为两个主要部分:第一部分把你的3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素细分的话,图形渲染管线可以被划分为几个阶段,每个阶段将...
2020-04-16 19:56:12 761
原创 OpenGL基础2:OpenGL简介
其实看到这里,你应该也像我一样,装好了环境,并且成功打开了第一个窗口,又或者说已经可以开始绘制一些非常基础的单元了,但是刚入门你应该也一样,对着一堆方法一脸懵逼,看着讲解和教程似乎也能理解,但是脱离教程就会发现自己一行代码都弄不出来,还是需要不断地去参考。小朋友你是否有很多问号,不知道为什么需要这么多复杂的方法,也不知道为什么要这么设计,更不知道仅仅显示一个点都那么复杂,后面3D游戏中的...
2020-04-15 21:44:50 631
原创 2017 ACM-ICPC乌鲁木齐网络赛 G. Query on a string(KMP+树状数组)
题目链接:https://www.jisuanke.com/contest/870题意:给出两个字符串S和T,Q次操作:①C a b表示将第a个字符改为b;②Q l r表示T在S的子串[l, r]中共出现多少次其中|S|思路:若S串的子串[x-|T|+1, x]和T串完美匹配,那么flag[x]==1,否则flag[x]==0,sum[]是flag[]的前缀和
2020-04-15 16:34:42 971
原创 splay伸展树基础操作(bzoj 1861: [Zjoi2006]Book 书架)
splay:一种排序树(先序遍历权值有序)主要性质:随着访问翻转次数的增多,复杂度越来越接近logn,形态也越来越接近平衡树主要功能:每次将要询问or删除or修改的点先一路翻转到根,然后再满足所需操作翻转规则如下:具体解析看代码1861: [Zjoi2006]Book 书架Time Limit:4 SecMemory Limit:64 MBSub
2020-04-15 16:33:33 777
原创 OpenGL基础1:最简单的OpenGL例子
相对于一些基础的课程,例如一门计算机语言,又或者说是Unity3D之类的游戏引擎,openGL的学习是要难不少,因此在网上“查攻略”的时候尽量想办法 1. 多参考几篇文章;2. 有能力的话去google,去国外的学习网站看看;3. 所有代码自己再写一遍本文(包括后续的openGL基础类文章)都是总结性质,难免会有少许不准确的地方,如有发现希望大家能够指出,万分感谢一、事前准备装环...
2020-04-15 15:51:16 2199 1
原创 OpenGL环境配置(超全整合版)
网上搜罗各种资料,终于把openGL的环境配置好了,为了让后面的人省事,于是整合出了一个类似于“懒人包”的东西,非常好弄,按照下面的教程来就好了,什么都不缺一、事前准备一块主流显卡(最好是独显) Visual StudioIDE(最好是2017以上版本,本人是2019)应该都没问题二、下载完整配置包链接&提取码:0k32,解压后里面有3个文件夹和一个文件,...
2020-04-13 21:23:59 14045 16
原创 基础线代公式汇总
相关专业大学时都学过线代, 然而等到真正需要用的时候,已经过去好久了导致很多东西都忘了,所以需要专门开一贴记录一下,这里就当是个汇总吧1):向量点乘与其向量夹角之间的关系:2):向量b在向量a上的投影(其中为向量ab之间的夹角):3):向量a和b的叉乘(积):,其中i, j, k为基向量a和b的向量积同时垂直于这两个向量 维向量不存在向量积 计算二维向量的向量...
2020-01-02 21:21:55 7126 2
原创 LuaForUnity10:框架配置与AssetBundle
一、框架配置文件ulua的框架配置文件:Scripts/ConstDefine/AppConst.cs这里面有特别多的公共常量信息(注释也非常全),类似于总控制台,目前只考虑一个比较重要的参数:ExampleMode,一般来讲如果你用当前框架进行开发前,一般都会把里面的NGUI等例子全部删掉,在这之前需要将这个参数置为 false,关闭之后,就可以把根目录下的“Examples” 直...
2019-11-29 19:23:51 365
原创 LuaForUnity9:uLua的一个简单实例
一、LuaScriptMgr和DoString方法LuaScriptMgr:uLua自带的管理器,对 LuaState 进行了封装,而 LuaState 又是对 Lua 解析器对象的进一步封装,LuaState 是运用的反射方式,而LuaScriptMgr 用的是 Wrap 方式DoString方法:载入文件并执行代码块,对于相同的文件每次都会执行,适用于简单便捷的任务,和DoFile很...
2019-11-28 11:02:25 277
原创 LuaForUnity8:uLua简介
一、ulua简介ulua:一种支持Unity3D的热更新方案(unity+lua+cstolua)SimpleFramework:一个ulua框架,是一个可以直接使用的项目工程,有对应UGUI和NGUI两个版本热更新的意义在于,游戏上线后难免会需要即时修复BUG或是更新节日活动,这些都需要进行游戏的更新,然而每次更新都要重新打包是非常伤的,而热更细的话用户只需要直接重启客户端就能...
2019-08-01 16:00:18 485
原创 C#基础18:内置委托类型Action和Func
前文:https://blog.csdn.net/Jaihk662/article/details/97130647(匿名方法与Lambda表达式)一、Action泛型委托Action 为 System 内置的无返回值委托,只需要引用 System 库就可以直接使用而不用定义,有以下几种形式public delegate void Action(); public delega...
2019-07-24 16:10:15 453
原创 C#基础17:匿名方法与Lambda表达式
前文:https://blog.csdn.net/Jaihk662/article/details/96895681(委托)一、匿名方法匿名方法:字面理解,没有名字(名字省略)的方法。在开发过程中,有些方法非常简单因此就根本没有必要专门定义成一个方法,从此就出现了匿名方法根据前文第二个例子“多播委托”,修改其代码,将其中的Add()方法换成匿名方法如下:using Syst...
2019-07-24 14:33:36 419
原创 C#基础16:事件与观察者模式
前文:https://blog.csdn.net/Jaihk662/article/details/96895681(委托)一、事件与委托其实事件就是委托的一种升级版,和委托的不同如下:在原有的委托变量的基础上多一个 event 关键字,这个委托变量就称为事件; 在其它类中,事件只能使用 +=、-=来注册方法,而不能使用=为事件关联方法,相对于委托更加安全一个例子如下(...
2019-07-23 15:57:24 424
原创 C#基础15:委托
一、最简单的委托例子委托(delegate):类似于C语言函数作为参数传递,语法:访问修饰符 delegate 返回值类型 委托名称(参数列表);关于委托最宽泛的理解:委托声明的关键字:delegate 委托声明的位置可以在类外,也可以在类内,定义在类外同命名空间内其他的类也可以使用这个委托;定义在类内则是作为类的成员存在,只能在当前类中访问 如果方法A的返回值类型以及参数都...
2019-07-22 20:33:23 319
原创 C#基础14:泛型
一、泛型类为什么需要泛型:你可能并不能确定当前某个变量到底应该是什么类型,又或者说这个变量可以是任意一种类型 泛型的定义:简单来讲就是“任意一种类型” 泛型的应用:各种STL容器,Unity中的GetComponent<T>() 符号:<占位符1, 占位符2…>string.Format():C#归一化,将指定的String中的格式项替换为指定的 Ob...
2019-07-19 11:35:09 250
原创 LuaForUnity7.1:Lua“类与对象”
前文:https://blog.csdn.net/Jaihk662/article/details/95452907(Lua表与元表)一、Lua的“面对对象”可以看到题目和标题的“类与对象”都是加了引号的,原因很简单:Lua语言本质上是非常简单的,没有强大的类库,所以说使用Lua独立开发一款程序是不可能的,大部分情况都是是嵌入到其他语言编写的程序中进行辅助工作,这句话的意思就是:...
2019-07-12 17:57:56 289
原创 LuaForUnity7:Lua表与元表
一、万能数据类型:table之前讲过的数组其实就是table的一种特殊形态,而table更像是一个会变形的精灵,它可以是字典、可以是链表、也可以是数组,就看你想要如何使用换句话说:table是Lua语言中的一种代码格式结构,可以用来帮助我们创建不同的“数据类型”,后面的面对对象,也都是通过table的格式进行实现的一个例子如下:(代码中有注释)#table:求出table的长...
2019-07-11 10:23:37 324
原创 LuaForUnity6:Lua模块
一、Lua模块简介如果不怎么能理解,可以先去学习下Lua的面对对象为什么需要模块:为了拆分代码,很像命名空间 模块的使用:在A.lua中写好了一些函数,在B.lua中只需加载A.lua,就可以直接调用A.lua中的函数一个模块的例子:注意local和非local的区别,代码中有注释Module1.lua:local range = {}name = "Module1...
2019-07-10 16:21:18 272
原创 LuaForUnity5:Lua的字符串
一、字符串处理:string.upper():转大写 string.lower():转小写 string.reverse():字符串反转 string.len():获取长度 string.gsub():字符串替换 string.sub():字符串截取 string.find():寻找子串详细使用具体看代码,有注释print("---------------------...
2019-07-10 12:00:54 385
原创 LuaForUnity4:Lua的函数
一、Lua的函数代码中有注释一些重点:Lua的函数可以返回多个结果,你可以将它们赋值给数组 function 函数名(...):函数传入可变参数 select("#", ...):求出可变参数的参数数量 在Lua中无论在哪里申请变量,都算作全局变量,只要没有用local关键字print("-----------------------------------------...
2019-07-09 21:27:25 322
原创 LuaForUnity3:Lua的分支结构、循环结构与数组
一、分支结构与循环结构如果学过C/C++/C#就很简单了,代码中有注释print("-----------------------------------------------")num = 15if(num > 10) then print("num > 10")elseif(num > 5) then print("num > 5...
2019-07-09 11:10:09 382
原创 IntelliJ IDEA + EmmyLua:Lua IDE的安装与使用
第一步:安装EmmyLua不用管,也不用解压,先安装 IntelliJ 和 LuaForWindows_v5.1.4,如果安装的过程中出现“无法连接至服务器”的错误,那么就先运行下 vcredist 2005 SP1下载链接在这:51lw之后添加插件如下:第二步:新建项目新建项目时记得选一下SDK(如果你下了LuaForWindows就不用管,它已经帮你提前设置...
2019-07-08 16:25:28 9989 1
原创 LuaForUnity2:Lua基本数据类型与符号
一、基础数据类型Lua有四种基础数据类型:number:数值类型,可以存储整数和小数 boolean:布尔类型 string:字符串类型,用单引号或双引号表示都可以 nil:区别于其它类型,一个全局变量在第一次赋值之前默认值就是nil,如果将一个变量赋为nil,就相当于删除了它type():获取当前变量的类型和一般的编译语言不同的是:Lua不需要定义数据类型,直接复制即可...
2019-06-25 16:57:55 994
原创 LuaForUnity1:Lua介绍与使用
一、Lua与C#C#是编译型语言、Lua是解析型语言,关于编译型语言和解释性语言的介绍一般来讲Lua不能单独用于一款游戏的开发,因此对于一个Unity项目,一般先用C#进行开发,后续的热更新再通过Lua来完成,从这里可以知道两点:Lua语言的目的是“嵌入式”,一般用于为其他语言开发出来的项目进行功能的扩展和补丁的更新 在最开始使用其它语言进行项目开发的时候,需要预留与Lua代码...
2019-06-25 14:56:17 581
原创 Unity3D实践4:带有出入特效的提示框
前置:最好使用对象池;前文:https://blog.csdn.net/jaihk662/article/category/8688031(UGUI)实现效果在这~:第一步:制作UI很简单的,一张背景图一段文字,背景图可以半透明可以给文字加上Outline组件,也就是字体边框,用作UI美化,调整下边框的颜色和透明度给图片加上CanvasGroup...
2019-04-13 17:33:14 1508
原创 SourcesTree使用手册3:文件贮藏与删除
前文:https://blog.csdn.net/Jaihk662/article/details/89183880(文件更新)假设你很久以前写了一个很重要的脚本xxx.cs并且已经提交,而现在你想优化一下其中一部分代码,并且准备优化(修改)完毕后更新到你的分支……一、文件修改与删除你已经在本地修改完毕了:这个时候SourcesTree会将你修改的那个文件视作“新文件”,如下...
2019-04-10 21:54:01 10939
原创 SourcesTree使用手册2:文件更新
前文:https://blog.csdn.net/Jaihk662/article/details/89177151(与Git进行通信)一、文件更新你写了两份代码,也已经测试过了,你想上传到服务器,那么怎么办呢先将你的代码放入你的本地地址内,之后点进自己的分支,查看文件状态如下:确认无误后暂存提交这个时候,如果你有跟踪远程的分支,就可以直接推送了推送完...
2019-04-10 16:32:20 787
原创 SourcesTree使用手册1:与Git进行通信
前文:https://blog.csdn.net/Jaihk662/article/details/89154465(Git和SourcesTree的安装)一、你的Git项目大概是这个样子的其中SSH就是你在本地SourcesTree中添加的Git地址常用的5种分支(前两个分支必有至少一个):master:最终发布版本 develop:项目的开发分支 featur...
2019-04-10 15:05:20 1078
原创 Git和SourcesTree的安装
先给两个网页链接:https://www.sourcetreeapp.com/ https://cn.atlassian.com/software/sourcetree如果懒的去下载,放个链接:fwuk;里面就有Git和SourcesTree的安装包了安装的时候注意两点:如果你是初学的小白,或者说只是自己弄着玩,安装时可以一路默认点下去(这里有一个详细的小白教程也可以跟着来:...
2019-04-09 17:38:19 1289
原创 在Unity3D中使用Protobuf3
Protobuf:平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,一般用于网络通信和数据存储第一步:下载并准备DLL文件链接:mvn9(或者https://github.com/protocolbuffers/protobuf/tree/82d3d7d250645322f8a7343188e5ae6246a76414)先设置下DLL导出版本,不同版本的Unity3D...
2019-04-08 17:15:05 4816 5
OpenGL基础学习完整代码(完整场景带优化).zip
2020-09-28
OpenGL基础学习完整代码.zip
2020-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人