- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 3D游戏图形API简史
什么是图形API我们常听到的OpenGL、DirectX、Metal等都属于图形API,它的本质是一整套编程接口,用来将应用程序与显卡驱动联系起来。有了图形API我们可以仅仅调用它的函数来更改渲染状态、缓存顶点数据、开始绘制等等,而如果没有它,我们就需要直接调用显卡驱动的接口来进行渲染,这会涉及到非常多的硬件接口,例如对寄存器的操作,相当繁琐。一般来说我们都不会希望在渲染的同时还要去关注对硬件的控制。硬件显卡厂商例如NIVIDIA、AMD,他们如果要和图形API合作往往就需要在显卡驱动去实现这些API。
2020-05-16 14:53:20 2397
原创 图形程序学习过程分享.md
文章目录概述学习过程1.[learnopengl中文教程](https://learnopengl-cn.github.io/)2.《unityshader入门精要》中文书籍3.[catlike srp系列教程](https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/)4.UniversalRenderPipeli...
2020-05-06 10:37:43 366
原创 《军团要塞2》绘画渲染
军团要塞2绘画渲染(a)美术概念 (b)游戏内玩家看到的角色摘要在《军团要塞2》中我们提出了一整套美术方案和新的实时渲染技术,这种技术能实现出一种独一无二的渲染风格。《军团要塞2》由美术和程序基于20世纪初时商业插画中的传统风格合作完成。在这篇论文中,我们会结合美术方向与技术选择,来讨论如何支持美术目标和玩法限制。除了实现一种有冲击力的风格外,我们也设计了边缘光照和亮度与色调变化的着色器技...
2020-02-19 10:38:24 1492 1
原创 OpenGL之帧缓冲
本文主要包括帧缓冲的基本概念、函数使用,以及引出离屏渲染和后处理的介绍。文章目录概要帧缓冲附件函数纹理附件渲染缓冲对象附件附件类型的选择后处理离屏渲染离屏渲染与双缓冲来源概要所谓帧缓冲是做什么用的,就是用来存储渲染数据的地方,可以理解为显存。几何数据(顶点坐标、纹理坐标等)和纹理经过一系列渲染管道最终计算出屏幕上的所有像素点,它们需要一个地方来存放,这个地方就是帧缓冲。帧缓冲中的数据会被显示...
2019-04-17 13:37:02 4487
原创 [Effective Python笔记]二、函数
文章目录尽量用异常来表示特殊情况,而不要返回None了解如何在闭包里使用外围作用域的变量1.获取闭包内的数据2.Python2的值考虑用生成器来改写直接返回列表的函数在参数上面迭代时,要多加小心用数量可变的位置参数减少视觉杂讯用关键字参数来表达可选的行为用None和文档字符串来描述具有动态默认值的参数用只能以关键字形式指定的参数来确保代码明晰在Python2中实现只能以关键字来指定的参数尽量用异...
2019-02-19 11:52:29 267
原创 [Effective Python笔记]一、用Pythonic方式来思考
文章目录确认自己所用的Python版本遵循PEP8风格指南了解bytes、str和unicode的区别用辅助函数来取代复杂的表达式了解切割序列的方法在单次切片操作内,不要同时指定start、end和stride用列表推导来取代map和filter不要使用含有两个以上表达式的列表推导用生成器表达式来改写数据量较大的列表推导尽量用enumerate取代range用zip函数同时遍历两个迭代器不要在fo...
2019-02-19 11:49:03 191
原创 [Python]浅探生成器Generator
是一个类类中同时包含有__iter__()方法和__next__()方法的都是生成器。获得方法常见的有几种 eg.1 生成器generatorlst = [1,2,3,4]generator = (x for x in lst)注意这里括号不是’[]’,否则生成将是一个数组。 相比于用’[]’生成的数组,这里仅生成了generator,而数据则在需要的时候才生成,...
2018-07-12 11:25:04 188
原创 [Python]成员变量与类变量
前几天偶然间踩坑后发现了python的类变量(ClassVar)有一个特性,使用成员变量(MemberVar)的调用形式self.varName调用的居然是类变量!这还不够,当有同名的成员变量self.varName**被定义且被赋值**后使用self.varName调用的将不再是类变量而是成员变量!结论说起来可能有点绕,不如来看下这个例子:例1. 类变量class Func(): ...
2018-06-09 16:52:09 1896
原创 高级语言的编译与解释
我们平常所编写的代码C++也好,Java也罢,这些高级语言都是不能直接运行在CPU上的,因为CPU只能支持一种代码,那就是机器码。 而高级语言需要经过一个过程变成机器码,机器才能运行,这个过程就是我们所知的编译/解释。但是每种语言这个过程不太一样,因为他们的目标CPU体系不一样。比如说C#是一种二次编译语言,它首先是通过编译器将C#文件编译成IL文件,然后再通过CLR将IL文件编译成机器码文...
2018-05-27 21:34:40 4440
原创 [Python]常用数据存储结构.md
※ 以下代码运行于Python3因工作需要,开始接触python语言,这大概是我用过最优雅的语言,非常的简洁。js再懒咱还会使用var,python甚至连声明的数据类型都省略了。 除了基本基本语法外,列表、字典等数据结构是工作中用的最为频繁的部分,所以在学习的时候整理了常用的函数与技巧来便于自己以后查询,若有新的技巧也会在后续更新上来。序列切片Sequence序列并不是一种明确的类型...
2018-05-27 18:40:29 1524
原创 [Unity]Mesh相关类库翻译
Mesh 可以通过脚本代码创建或修改Mesh类。Mesh的属性包括顶点数组和若干个三角形数组对于每一个顶点,可以有一条法线、两个纹理坐标、颜色和切线。这些都是可选的可以随意删除。所有的顶点信息都分别存储在相同大小的数组中,如果你的mesh有十个顶点,那么你就会有十条法线和其它属性的数组。以下三种情况你可能会想用可修改的mesh
2018-03-03 14:57:12 757
原创 [Unity]如何加载Sprite(Multiple)中的Child Sprites
要获取Sprite(Multiple)中的子Sprite,方式有两种。方式一:在代码中加载。首先我的文件路径:"Assets/Resources/Sprite/Bomberman.png"方式二:在unity面板操作。参考来源:http://answers.unity3d.com/ques
2017-03-21 21:47:29 11451 1
MatCap Pro 1.0.unitypackage
2020-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人