OpenGL Shader

使用OpenGL创造的物体,在最终被绘制出来之前,有一个流水线处理过程,该过程被称为graphics pipeline,或者rendering pipeline,期间大部分工作由GPU执行,跟GPU紧密相关。 

 

随着GPU的发展,现在的GPU加入了可编程处理器,开发人员可直接控制GPU的行为。所谓Shader,就是控制GPU的一堆指令集,程序员写出shader,输入到GPU中,GPU执行。

 

早期的Shader是直接使用汇编。后来OpenGL ARB组织开发了一种新的编程语言,叫做GLslang或者GLSL, OpenGL shading language.该语言类似于C风格,在官方网站上有详细的语法解释,这样,程序员们就可以很方便的写出可直接控制GPU的代码了。

 

所谓控制GPU,就是控制GPU的处理器,现阶段,GPU有以下几个处理器:

1. Vertext processor

2. Tessellation Control processor

3. Tessellation Evaluation processor

4. Geometry processor

5. Fragment processor

于是,你懂的,shader就分为:

1. Vertext shader

2. Tessellation Control shader

3. Tessellation Evaluation shader

4. Geometry shader

5. Fragment shader


2D图形,就是无论你如何移动视角,地面上的建筑物、花草树木样子都不会变,而3D图形则不 同,随着视角的变换,你看到的物体也在变化,从正面变成侧面,越远的物体越小,越近的越大,与现实生活中人眼看到的情景非常相似。
  shader就是专门用来渲染3D图形的一种技术,通过shader,程序设计人员可以自己编写显卡渲染画面的算法,使画面更漂亮、更逼真。
几年前并没有shader这个东西,所以那时候的显卡,就不 支持shader,而只支持固定管线渲染,游戏画面也没有现在的酷。
  shader又分两种,一种是顶点shader(3D图形都是由一个一个三角形组 成的,顶点shader就是计算顶点位置,并为后期像素渲染做准备的),另一种是像素shader,像素shader顾名思义,就是以像素为单位,计算光 照、颜色的一系列算法。
  几 个不同的图形API有各自的shader语言:

在DirectX中,顶点shader叫做vertex  shader,像素shader叫做pixel shader;
  在OpenGL中,顶点shader也叫做vertex  shader,但像素shader叫做fragment shader。
  此外显卡芯片厂商nVidia还推出CG显卡编程语言,也支持 shader。
  shader 有很多不同的版本:所以,即使你的显卡支持shader,但可能版本不够高,所以无法支持比较新的游戏使用的 shader。
  一般来说,大部分游戏都支持不同版本的shader,为的是让尽可能多的机器都能运行,为此需要做很多额外的工作。
  除了显卡不够新之外,不同显卡厂商对shader的支持也不尽相同,所以同一个游戏,一样的设置,在n卡和ATI的卡上,表现可能大不一样。
  另外,安装官方最新的驱动程序也是必要的。如果你安装了错误的驱动程序,甚至是随便从网上下载一个显卡驱动,那么即使你的显卡支持 shader,也可能跑不了需要shader支持的程序,包括但不限于网络游戏!


tessellation简介::

http://blog.csdn.net/lcphoenix/article/details/6574497


转贴一片tessellation介绍的文章

http://blog.csdn.net/lcphoenix/article/details/6574502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值