3D游戏基础 Direct3D(一) D3D基本概念及渲染流水线简介
终于,在前3篇文章里面聊完了基本的空间几何概念,现在可以说到实际的东西了。
一直以来,都希望用最浅显易懂的语言,把我对3D的一些了解记录下来,作为一个系列的科普文章,供大家消遣时看看。
大约十年以前,我拥有了第一台电脑,不久见识到了3D游戏的魅力。听说了OpenGL,再后来又听说了微软的DirectX 3D(简称 D3D)。早期的游戏对比来看,基于OpenGL的游戏画面效果似乎要比D3D略好一些,不过在微软在windows平台给OpenGL穿小鞋之后,OpenGL逐渐被D3D所超越。到今天,D3D的效果似乎已经略优于OpenGL了。
那么,到底什么是OpenGL和D3D呢?
这就要从商业、技术、计算机发展史等角度来看了。
当年ID soft的卡马克他们,发明了游戏引擎这个概念之后,人们开始用引擎来开发大量的游戏,当游戏的画面拟真度越来越高时,仅仅靠CPU来进行图形图像处理已经不能满足游戏的需要了。于是,人们开始尝试用硬件加速卡来协助CPU进行3D图像处理,此举在技术上和商业上都大获成功。早期比较出名的比如 Voodoo等。
于是,大量的加速卡及GPU(Graphic Processing Unit)设计公司开始迅速推出自己的设计,如 ATI(刚被AMD收购),NVidia,PowerVR(市场萎缩,转向嵌入式系统的3D加速单元,参考PowerVR MBX及OpenGL ES)等开始展露头角。
问题随之出现:每家公司可能都有自己的设计方案,那么游戏和3D应用程序开发者所设计开发出来的软件就很难在不同的厂商之间的加速卡上运行,很难很好的使用这些加速卡的加速功能。也就是说,这类应用程序的移植性将会降低。
要解决移植性的问题,可以通过将加速卡功能抽象出来,统一定义接口的形式来实现。于是,人们采用了典型的分层模式(参阅:设计模式),将一套应用程序分为3个层次:
应用程序层 -> 硬件抽象层 -> 硬件层
其中,应用层 就是游戏和应用软件开发人员的开发主体,他们调用统一的加速卡API来进行上层开发,而不用考虑移植性问题;
硬件抽象层 则抽象出硬件的加速功能,进行有利于应用层开发的封装,并向应用层开放API;
硬件层 将硬件驱动提供给抽象层,以实现抽象层加速功能的有效性。
这个结构有效的将游戏和应用程序 与 硬件加速卡隔离开,这就很好的提升了程序的移植能力。并且,还有一个好处就是,开发人员的知识复用率得到提高,从而降低了这类软件的开发门槛。
于是,众多的加速卡厂家就联合起来,形成一个组织,共同制定出了这个硬件抽象层的接口标准,这就是OpenGL。
而出于同样的目的,微软也定义了一套平行的类似于OpenGL的接口集合,就叫做 Direct 3D。
这就是OpenGL和D3D的起源。
不同的是,OpenGL只包含了3D加速接口,而DirectX除了D3D之外,还包含了声音接口Direct Sound,然后还有输入输出设备的接口,统称为DirectX。
不论OpenGL还是D3D,他们的工作流程其实是大同小异的。
后续均以D3D为例,进行讨论。
3D加速卡的主要功能就是协助CPU,负责将内存中的矢量图像数据(顶点集合)进行变换、光照计算、裁剪等操作,最后经过光栅化将图像呈现给人眼。这个过程就叫做渲染,D3D把整个渲染分为9个步骤,9个步骤的组合,就叫做流水线,或者叫 管线 (参阅 设计模式 之 流水线模式)。
D3D的渲染管线(Rendering Pipeline):
局部坐标变换 -> 世界坐标变换 ->观察坐标变换->背面消除->光照->裁剪->投影->视口计算->光栅化
(这9个环节在后续文章中会逐一介绍)
固定管线 和 可编程管线都要经过这9个步骤。
首先介绍 可编程管线。顾名思义,就是说管线中的某些环节是可以被控制的。人们可以通过对GPU中的着色器进行编程的方式,来控制、管理加速卡的渲染效果。着色器分为 顶点着色器和像素着色器。 顶点着色器是在进行 坐标变换 和 光照计算时工作,像素着色器是在光栅化环节工作。人们对着色器进行自定义编程时,这个流水线就叫做 可编程管线。
同时,D3D还提供默认的着色器程序,当游戏或应用程序完全使用默认着色器程序时,这个流水线就叫做 固定管线。
后续的章节,会首先介绍固定流水线及其各个环节,之后会介绍着色器编程。
3D游戏基础 Direct3D(一) D3D基本概念及渲染流水线简介相关推荐
- Android 3D游戏基础介绍
首先开始介绍OpenGL的术语. 顶点Vertex 顶点是3D空间中的一个点,也是许多对象的基础元素.在OpenGL中你可以生命少至二维坐标(X,Y),多至四维(X,Y,Z,W). w轴是可选的,默认 ...
- 【3D游戏基础】蒙皮骨骼动画与骨架
效果 目标!画出蒙皮动画的骨架. 视频 https://www.bilibili.com/video/BV1pM411m7Yw PPT https://zfxdvouj61.feishu.cn/fil ...
- 3D游戏建模师加不加班?严重吗?
加班情况严重这种事情,我想不止在游戏模型行业,在其他很多行业也是如此 但是这真的很难受,尤其是浪费时间. 很多时候老板跟你说这个要这样这样改,老板满意了,交上去甲方要求你这样这样改,一直到对方满意为止 ...
- DirectX12 3D游戏开发实践(龙书)第五章 渲染流水线
渲染流水线 渲染流水线 3D视觉即错觉? 模型表示 计算机色彩基础 颜色运算 不透明度 XXX位颜色 渲染流水线概述 输入装配器阶段 顶点 图元拓扑 点列表 线条带 线列表 三角形带 三角形列表 具有 ...
- 手把手教你架构3d游戏引擎pdf_一个在游戏行业摸爬滚打了十几年的人,为何我对这本书情有独钟...
Big News!<游戏开发:世嘉新人培训教材>今日开始预售啦!经过漫长的等待,这次终于可以买到了.现在下单,你将在图书出印厂的第一时间收到书哦- 这本书由世嘉一线开发者执笔,并被选为世嘉 ...
- 次世代3D游戏角色是如何打造出来的?
前言 通常,一个3D游戏角色的制作流程分为概念设定-3D建模-贴图-蒙皮-动画-引擎测试六个步骤,涉及到的岗位有原画师.模型师.动画师等.整个制作周期30到45天. 下面就来简单讲述下游戏角色的制作过 ...
- Android 3D游戏开发技术宝典pdf
下载地址:网盘下载 <Android 3D游戏开发技术宝典:OpenGL ES 2.0>内容简介:随着智能手机移动嵌入式平台硬件性能的不断提升,3D游戏应用也逐渐普及开来.<Andr ...
- 3D动作绑定_次世代3D游戏角色的制作流程
文 |游鲨游戏 / 图| 网络/原创 通常一个3D游戏角色的制作流程分为概念设定.模型搭建.贴图烘焙.骨骼蒙皮.动画制作和引擎测试六个步骤,涉及到的岗位有原画师.模型师.动画师等.整个制作周期30到4 ...
- 次世代3D游戏角色的制作流程
通常一个3D游戏角色的制作流程分为概念设定.模型搭建.贴图烘焙.骨骼蒙皮.动画制作和引擎测试六个步骤,涉及到的岗位有原画师.模型师.动画师等.整个制作周期30到45天. 对于策划来说,了解美术工作流程 ...
最新文章
- mysql dump 到的文件_mysql查询结果导出到文件
- 产品经理:三步到位,落地需求
- k8s往secret里导入证书_Rancher 修改Kubernetes Ingress默认ssl证书
- bootstrap 模态框无法使用_模态窗 Modal Window - 产品中的??注意力设计
- html css模仿实例,HTML+CSS模仿大学网站主页
- 用 wait-notify 写一段代码来解决生产者-消费者问题
- java调用notify方法_Java线程,下面程序不知怎么调用notify方法唤醒test1,请指正
- pytorch: Parameter 的数据结构
- Atitit webdav的使用与配置总结attilax总结 目录 1. 支持的协议	2 1.1. http File unc	2 2. 应用场景	2 2.1. 远程文件管理实现功能 文件建立
- 用计算机解数独,6宫格数独计算器
- 如何在Firefox中播放MID文件?
- Shadowing Japanese Unit 4
- 网络游戏开发实战-坦克大战学习问题记录
- 你还相信节食能减肥?
- 键盘 Key Code对照表
- 软件测试中自上而下与自下而上的区别
- 13 MATLAB 三维图形绘制
- adb wifi连接android设备
- NumPy入门讲座(3):操作数组
- sqlserver 之STUFF的运用