【SoftwareRender三部曲】三.流水线

一.前言已经是三部曲中最后一个章节,这个章节结束之后将会完成这个SoftwareRender。而这章也是内容最多,最不容易理解的章节。 二.缓冲区在写流水线之前我们要先实现缓冲区,因为流水线上的读写操作都是在缓冲区中实现的,一般来说缓冲区有颜色缓冲区、深度缓冲区、模板缓冲区。在这里为了简单,我们...

2017-12-30 15:04:23

阅读数:244

评论数:4

【SoftwareRender三部曲】二.着色器(shader)

一.前言在传统的固定渲染管线中,渲染中的一系列操作如:坐标转换、光照、投影、剪裁、扫描转换、纹理贴图、可见性测试、帧缓冲像一个流水线一样按部就班的按序执行。每一道工序上都有一些不同的参数,开发者为了完成不一样的效果就是去改变每个工序的参数。然而人们总是不满足于这样有限的控制;于是就出现了后面的可编...

2017-12-27 21:12:35

阅读数:109

评论数:0

【SoftwareRender三部曲】一.网格

一.简介在这个系列讲述绘制图元主要是以三角形为主,我们通过顶点构成三角形,三角形构成整个模型的网格。如下:每个顶点可以携带一些信息,比如位置、法向量、颜色、UV坐标等等。后面我会在Shader着色器篇章讲述这些信息的用处。 如何用顶点来组织一个网格呢?这里我们是使用的索引顶点。也就是顶点数据只存...

2017-12-27 00:33:39

阅读数:167

评论数:0

【SoftwareRender三部曲】前言

一.介绍这个系列主要是介绍如何简单制作一个SoftwardRender,后面会分三篇文章来完成这个系列。在看这个系列之前最好先阅读之前【游戏开发3D数学笔记】;在这个工程中的所需要的一些数学库(Vector、Matrix、Mesh等)都来源于之前3D数学系列。当然,这些数学库使用上比较简单,如果你...

2017-12-24 23:50:54

阅读数:105

评论数:0

【游戏开发3D数学笔记】6.坐标系切换和纹理

一.物体坐标系到世界坐标系(Model Matrix)        在之前固定流水线,需要将模型的顶点坐标从自身坐标系依次进行缩放,旋转,平移操作(这个顺序不能改变)。而在可编程管线中,这些操作放到了vertex shader中,我们需要得到模型中的每个顶点的世界坐标,从而进行一些深度测试、光照...

2017-12-08 20:41:35

阅读数:176

评论数:0

C++ Vector属性Swizzle实现

一.前言 在写gl shader的时候, 我发现glsl的语法中vec可以支持如同如下的语法任意混合属性 vec3 pos; pos.xyz pos.yxz pos.xxx pos.zx ... 我们可以很容易的在C++写一个2、3个属性的vec类,但是如何使得vec也支持如上语法将属性进行混合呢...

2017-12-06 17:36:14

阅读数:185

评论数:0

【游戏开发3D数学笔记】5.方位与角位移

一.思维导图        没有太多时间码字,后面可能使用思维导图的方式梳理章节重点。 点击查看大图 二.Quaternion类        根据书上第10,11章的内容,整理了一个Quaternion类,其接口和实现主要是参照Unity的Quaternion类来仿写的。         ...

2017-11-19 19:20:33

阅读数:157

评论数:0

【游戏开发3D数学笔记】4.矩阵和线性变换

一.不同变换的矩阵推导 旋转         在前文知道旋转矩阵的行向量就是旋转后的坐标系的基向量。2D中绕原点的旋转只有一个参数,角度θ,它描述了旋转量。逆时针旋转经常(不是必须)被认为是正方向,顺时针方向是负方向。如下图,我们很容易得到旋转后的基向量,从而得到旋转矩阵:2D旋转矩阵R(θ)=[...

2017-11-07 11:06:33

阅读数:170

评论数:0

【游戏开发3D数学笔记】3.向量和矩阵

一.前言        这篇笔记没有太多东西,书中这两章多是关于向量、矩阵的一些概念和运算介绍。网上已经有很多优秀的博客讲解,这里不累赘介绍。主要是根据书中的讲解,写一个向量、矩阵的运算类以供后面使用。 二.向量        相关概念学习地址:3D数学基础—向量         需要掌握的是...

2017-11-04 17:21:40

阅读数:119

评论数:0

【游戏开发3D数学笔记】2.坐标系

一.坐标系简介         为了描述二维,三维空间中位置,方向等,数学家提出了坐标系这一概念。并且在不同的场景下使用的坐标系也可能不一样,比如:地理位置——经纬度,二次曲线分析——极坐标,而在此书中描述3D空间物体坐标使用的是笛卡尔坐标系。至于笛卡尔坐标系的详细介绍可以查看[笛卡尔坐标系Wik...

2017-10-31 11:09:09

阅读数:189

评论数:0

【游戏开发3D数学笔记】1.有话说在前面

一.前言        这个分类的文章主要是我学习《3D数学基础:图形与游戏开发》这本书所做的一些笔记,笔记之中难免会使用书上的原句。然后我也会将查阅的一些相关资料融在一起。所以在使用原句的时候我尽量使用紫色标注:         [该颜色内容为书中的的原句]         对于我自...

2017-10-29 22:07:17

阅读数:189

评论数:0

天道酬勤,记春招之路(完美世界,360,腾讯IEG,网易雷火)

一.前言先说说自己的一些情况吧,本人来自双非一本理工科学校,软件工程大三学生。大学期间参加过ACM竞赛,也进过实验室做过项目。主要学习的语言是C++,但是项目开发却是用的Unity+C#进行项目开发。除了实验室的项目,自己也会抽闲暇时间自己做一些游戏Demo。目前想从事的岗位是游戏客户端开发工作。...

2017-04-28 22:22:48

阅读数:3179

评论数:4

2017第八届蓝桥杯C/C++ B组省赛题解

2017年第八届蓝桥杯C/C++ B组省赛题解

2017-04-08 19:47:21

阅读数:57833

评论数:155

剑指Offer(24)______二叉树中和为某一值的路径

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 class Solution { public: vector > ans; int arr[10000]; voi...

2017-03-24 08:44:48

阅读数:518

评论数:0

剑指Offer(23)______二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 class Solution { public: bool check(vector& s,int l,int r){ ...

2017-03-24 08:42:55

阅读数:220

评论数:0

剑指Offer(22)______从上往下打印二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。 class Solution { public: vector PrintFromTopToBottom(TreeNode* root) { vector ans; vector tr...

2017-03-24 08:40:07

阅读数:253

评论数:0

剑指Offer(21)______栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)...

2017-03-24 08:37:38

阅读数:256

评论数:0

剑指Offer(20)______包含min的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 class Solution { public: stack stk; stack m; void push(int value) { if(m.size()==0){ ...

2017-03-24 08:36:01

阅读数:372

评论数:0

剑指Offer(19)______顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. class...

2017-03-24 08:34:48

阅读数:193

评论数:0

剑指Offer(18)______二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / ...

2017-03-24 08:33:12

阅读数:218

评论数:0

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