c语言内联函数的如何使用
lambada什么语言?
lambada什么语言?
lambda语言是一种允许将函数传递给另一个函数的语言,其中函数被视为任何其他变量。此外,您应该能够定义此函数以匿名(或内联)方式传递。
1.是否可以在创建视图时采用ORDER BY子句?为什么?
这个要看你是什么数据库的。Oracle可以创建视图的时候,在里面的sql加orderby.例如:SQLcreateviewv_testasselect*fromtest_mainorderbyid;视图已建立。但是同样的语句,SQLServer就不行了。例如:1createviewv_testasselect*fromtest_mainorderbyid2go消息1033,级别15,状态1,服务器TESTPCSQLEXPRESS,过程v_test,第1行除非另外还指定了TOP或FORXML,否则,ORDERBY子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
如何评价微软全新的DirectX 12 Ultimate?
前几天我们三易生活在给大家分析Xbox Series X的技术细节时曾提出,这是一款充分利用了现有技术的主机,几乎可以说是把至今为止PC上的图形成果与最新设计思路结合到了极限。而且由于Xbox Series X本身是基于x86硬件架构,以及Windows操作系统,因此当中的不少新图形API和新的硬件调度技术,其实都有望出现在未来的桌面级Windows 10中。
不过即便是我们也确实没想到,微软的动作会这么快。仅仅就在Xbox Series X公布细节数天之后,微软就突然公布了全新的“DirectX 12 Ultimate”标准,并宣布其将为统一Xbox与PC体验的最新、最高级别的游戏图形标准。这意味着,诸如DXR 1.1新版光线追踪、VRS可变着色率、Mesh Shader多线程渲染管线,以及SFS采样反馈流等等,刚刚在Xbox Series X中登场的图形技术很快就将随着Windows 10 2004版的更新,降临到那些已经配备了RTX显卡的PC中来,并进一步成为大量次时代3A大作的技术标准。
很显然,微软为了提升自家平台的游戏体验,这次算是发了个“大招”。而DirectX 12 Ultimate这霸气的名字以及它所包含的一系列新功能,也确实令人对新版本的Windows 10有了更多期待。
但是,这样一来问题就出现了。众所周知,微软在Windows Vista时代引入了DirectX 10,在Windows 7上带来了DirectX 11,在Windows 8上发布了DirectX 12。那么为什么Windows 10发布的时候,我们却并没有等来DirectX 13,反倒是直到这多年之后,才终于有了一个“DirectX 12 Ultimate”呢?
要知道,DirectX曾经是显卡换代的原动力
要理解这一点,首先我们要先弄懂一件事。就是显卡的硬件功能和它对应的DirectX软件规范,究竟是“先有鸡还是先有蛋”。
PC上的第一款GPU,同时也是第一块支持DirectX 7.0的民用显卡
追溯历史不难发现,在DirectX 12之前,历代显卡的硬件换代基本上都是受软件与游戏技术换代所驱动。比如PC史上最早的“GPU”GeForce 256,就是在微软先公布了DirectX 7.0规范,引入硬件TL功能需求之后,NVIDIA第一个做出了适配的显卡,从此便一战成名。
又比如说在DirectX 10的时代,NVIDIA先推出了符合新图形规范的GeForce 8800Ultra,而ATI那边的Radeon HD2900XT“迟到”了很长时间,因此便在市场中陷于被动。
这块卡谁能准确说出名字和出处来?
从这些历史资料中我们都不难看出,在很长一段时间里,PC显卡市场都是微软先发布新版DirectX,相当于先提出了一个“技术规范”或者说性能需求,然后才有各大厂商针对性研发的硬件产品。
从DX9时代开始,微软的节奏就慢了下来
但是随着显卡市场在竞争中淘汰了越来越多的参与者,随着NVIDIA和AMD两家的寡头局面形成。微软作为操作系统的开发者,作为DirectX图形规范的制定者,也不免需要越来越多地“照顾”到两位硬件巨头的需求,或者说开始在DirectX规范里融入来自N、A两家的独家技术。
2003年,NVIDIA推出了GeForce FX系列显卡,它最大的特征有两点。一是“吃螃蟹”首发了GDDR2显存,二是在图形渲染上提供高速但低精度的16bit与低速但高精度的32bit两种工作模式。然而彼时的ATI却看出了GeForce FX设计的缺点,他们舍弃了高温高成本的GDDR2显存,继续使用GDDR一代显存控制器,并在图形渲染上创造性的使用了折中的24bit精度。
很显然,最终ATI的设计帮助他们取得了极大成功,也直接促使NVIDIA在后来的GeForce 6000系列上搞出了“大杀器”SLI技术。但是很少有人关注到这样一个重点,由于NVIDIA和ATI两家在DirectX 9时代的最初两款产品在设计上实在是差异太大,最后逼得微软不得不实际上为两家显卡分别推出了一个DirectX版本——NVIDIA GeForce FX系列用DirectX 9.0a,而ATI Radeon 9800系列用DirectX 9.0b。这是显卡厂商第一次直接以他们自己的技术在PC平台上影响到了DirectX规范的发展,而它实际上也就此改变了微软与显卡芯片企业的关系。
ATI Radeon HD4890,此卡的第一批货在中国是一张难求
正因为如此,到了DirectX 10的时代,统一渲染管线的设计很明显更“合”NV的意,因此GeForce 8800系列得以早早登场,迅速抢占了市场。而DirectX 10.1则更多融入了ATI(AMD)的需求,因此Radeon HD3650、HD3870,以及后来的HD4000系列强势反攻,而NVIDIA那边却对这一代规范几乎视若无睹。
DX11时代最流行的就是测曲面细分性能,然而这也有显卡厂商的利益因素在里面
很显然到了这个地步,DirectX与其说是微软所提出的图形技术规范,不如说其实已经是微软、NVIDIA、AMD三家的博弈结果了。也正是因此,在此后的DirectX 11和DirectX 12中,我们就看到了更多更符合显卡厂商利益的技术设定,比如说对显卡性能消耗极大,能够充分拉开高中低端显卡游戏体验差距的Tessellation(镶嵌,也称细分曲面)技术,实际上就来自于ATI在DX10时代的一项自研项目。又比如说现在大红大紫的光线追踪技术,其实好几年前就已经出现在一些专业级的制图显卡中,但游戏领域最早则是由NVIDIA用他们自己的RT Core和Tensor Core硬件,以私有API的方式实现,此后才被纳入了DirectX 12的DXR功能子集中,成为微软官方规范的一部分。
加量不改名,如今的DirectX对玩家更友好
那么,这意味着什么呢?首先,由于DirectX不再是直接刺激显卡厂商更新换代的标准,这意味着一方面来说DirectX大版本换代的必要性本身就不似当年那般迫切了,而且还能一定程度上让消费者“感到实惠”——比如说NVIDIA家的Maxwell、Fermi架构、AMD家的GCN 1.0~4.0,都可以通过软件更新支持到DX12,这就一定程度上增强了各家的消费者粘性,对于两家显卡厂商来说都是喜闻乐见的局面。
而另一方面来说,由于DirectX标准的更新速度相对放慢,那么对于游戏开发者来说,也就不用再把很多精力花费在转换到新技术和新标准上去,而是可以开发出能适应更多代硬件的作品,同时通过高配置的高分辨率、高特效水平、物理运算的有无、同屏敌人(AI)数量等方式,来区分不同硬件配置的游戏感受,实际上也比单纯的“从DX8升级到DX9”更为可感。
你所不知道的DirectX版本们
与此同时必须要说明的一点就是,其实微软在Windows 8到Windows 10的这几年里,也绝非守着已有的Direct X标准而没做任何改动。事实上,在知名显卡信息软件GPU-Z的“Advanced”页面,我们可以查看到当前显卡所支持的DirectX标准的详细信息的。而就在这里,赫然列出了很多人都不知道的一些DX近年来的更新版本号。
微软开发者网站上可以看到DX11~DX11.4的功能改变
比如说在推出Windows 8.1时,微软实际上将DirectX 11升级到了11.1版本,增加了诸如FMA(乘加计算)、半精度运算以及一大票强化渲染效率的新功能。而到了WIndows 10里,DirectX 11又先后得到了11.3、11.4以及11.5三次更新,为只支持DX11的“老显卡”引入了部分源自Direct 12的功能,以提升它们的运行效率。
源自Github上的微软官方wiki页面
又比如说,Windows 10至今为止已经至少推出过十一个更新版本(从最早的正式版TH1到最新的20H2测试版),在这个过程中,DirectX 12虽未有过“版本号”层面上的变动,但微软实际上先后五次对DX12的Shader Mode渲染引擎进行过更新,频繁程度和更新幅度甚至超过DirectX 11时代。诸如DXR光线追踪等功能,其实就是在这个过程中才被加入到DX12规范里的。
DXR1.1版光线追踪,它是本次DirectX12 Ultimate的重要部分之一
这也就是说,实际上微软在近几年里其实是一直在对DirectX 12进行着持续的“小修小补”的,之所以没有大张旗鼓地推出“DX13”,除了本身技术上变革并不算特别彻底之外,自然也是考虑到了对老卡的兼容性以及DirectX当前的功能定位所致。事实上,啾脸最新的DirectX 12 ULtimate,也是可以完全兼容NVIDIA家的RTX显卡的——只需要更新一下系统和驱动,光追用户们就能体验到免费的性能提升了,不得不说微软确实是干了一件大好事。
毕竟那个由DirectX版本驱动显卡换代的时代已经结束,而如今的微软似乎也更在乎服务好现有的玩家,而不是让大家都去买新硬件了。