着色器和效果——1.0 介绍高级着色语言

第一章       介绍高级着色语言

阅读此文表明您已同意文末的声明

概览

在本章中,我们将描述高级顶点着色语言(High-Level Shading Language ,简称HLSL),我们用它编写以下三章的顶点和像素着色器。简单的说,顶点和像素着色器是我们编写并在图形卡的GPUgraphics processing unit)上执行小的自定义程序,它替换了固定功能管线的一部分。通过用我们自定义着色器程序替换固定功能管线的一个部件,我们获得了能达到的图形效果的最大自由度。我们不再受限于预定义的“固定的”操作。

为了编写着色器程序,我们需要一种语言去编写它们。在DirectX 8.x中,着色器用低级着色器汇编语言编写。幸运的是,我们不再需要用汇编语言编写着色器了,因为DirectX 9已经支持高级着色器语言,我们可以用它编写着色器。使用HLSL在汇编语言之上编写着色器程序可从高级语言中受益,就像C++一样,它以超越汇编语言的方式编写应用程序,也就是说:

n         增加了生产力——用高级语言编程比用低级语言更快更容易。我们可以集中更多时间在算法上,而不是在编码上。

n         提高了可读性——高级语言程序更容易阅读,这意味着高级语言写的程序更易调试和维护。

n         编译器,时常,会生成比手写汇编更高效的汇编代码。

n         使用HLSL编译器,我们可以将代码编译为任意可用的着色器版本;使用汇编语言,我们可能需要为指定版本移植代码。

HLSL还和CC++语法相似,这样就缩短了学习的曲线。

最后,如果图形卡不支持顶点着色器和像素着色器的话,你就要为着色器例子程序切换到REF设备。

注意:像素着色器可以用软件模拟为软件顶点处理(software vertex processing)——D3DCREATE_SOFTWARE_VERTEX-PROCESSING

目标

n         学习如何编写和编译HLSL着色器程序

n         学习如何在应用程序和着色器程序之间交换数据

n         逐渐熟悉HLSL的语法、类型和内建函数

 

[声明]:本文译自Frank Luna的《Introduction to 3D Game Programming with DirectX 9.0》,限于译者水平,文中难免错漏之处,欢迎各位网友批评指正;本文仅用于学习交流与参考用途,不得用于任何形式的商业用途;如需转载需事先征得作者本人和译者的同意,保持文章的完整性,并注明作者、译者和出处,对于违反以上条款造成的后果,译者对此不负任何责任。我的邮箱地址是Raymond_King123@hotmail.com,欢迎热爱3D图形和游戏,并有一定图形编程经验的朋友来信交流。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值