上一篇中介绍了如何使用shader,用来一个最简单的shader,计算顶点的位置,调用了 OpenGL 顶点着色语言中的内置变量对顶点进行操作,这一例程中,将展示如何将应用层 的数据传递到shader中,在shader中完成相应的计算. 先说下在这一节中,我们要完成的任务,不调用OpenGL的旋转函数(即glRotate××) 系列函数,不使用矩阵完成对模型的旋转.要完成这样的功能,那么我们就只能借住shader 来进行计算,编写shader更多的情况要求我们对数学知识了解到更多,掌握的更多,写…
OpenGL着色语言(GLSL――OpenGL Shading Language)是用来在OpenGL中着色编程的语言, 也即开发人员写的短小的自定义程序,他们是在图形卡的GPU (Graphic Processor Unit图形处理单元) 上执行的,代替了固定的渲染管线的一部分.比如:视图转换.投影转换等.GLSL(GL Shading Language) 的着色器代码分成2个部分:Vertex Shader(顶点着色器)和Fragment(片断着色器) ,有时还会有Geometry Shad…
Opengl红皮书有选择的看了一些,最后的讲着色语言GLSL的部分看的甚为不理解,然后找到Opengl橙皮书,然后就容易理解多了. 在前面,我们或多或少接触到Opengl的处理过程,只说前面一些处理,简单来说:顶点操作-组装图形-栅栏化-片断处理-帧缓冲.其中顶点操作相当于我们在程序里设定顶点,法向量等,组装图形就是opengl以我们设定的格式连接顶点,如组装成三角形,四边形等.栅栏化就是把上部操作的图元分解成更小的单元,如一个三角形里有100个像素,在这个过程会转换成100个片断,这个片断包含…
上一个例程中,使用了uniform 类型的变量,uniform可以理解为全局变量,这一节中使用 的是attribute类型的变量,翻译过来就是属性,他是与顶点绑定的,就意味着一个顶点可以 有很多个属性(当然也可以没有),提出这个概念的原因是啥呢?我们先看下最早期的OpenGL 早己的OpenGL定义的数据比较少,有顶点,法线,颜色,纹理(1.0版本),也就是说一个 顶点可以传递给显卡的数据是有限的,没有办法在像显卡传递更多的数据参与计算,例如,现在 游戏中比较流线的法线贴图(或者叫凹凸纹理)是做…
之前介绍了vertex shader的基本原理,现在我们来做一个简单的实践,在游戏中广告版(布告版) 随处可见,而且效率很高,现在我们就使用shader来实现这一过程,首先我们要知道布告版的原理 实际上就是一直对着摄像机,与摄像机的方向上是垂直的.如下图所示: 不管摄像机如何去动,那么广告版也跟随一起动(即旋转),那么在摄像机动的时候,就要重新计算 布告版的位置,为了做到这一点,我么要对摄像机的原理有所了解,看摄像机的几个重要的参数, 观看的方向:dir 向上的方向:up 向右的方向:right…
摘抄"GPU Programming And Cg Language Primer 1rd Edition" 中文名"GPU编程与CG语言之阳春白雪下里巴人" In the last year I have never had to write a single HLSL/GLSL shader. Bottom line, I can't think of any reason NOT to use CG. shader language,称为着色语言,shade在…
一.环境准备: 系统环境win7,64位,双显卡:集成显卡+gt540m,gt540建议下载最新的驱动,可以支持到opengl4.3标准,一般双显的笔记本,程序默认启用的是集显,我机器的集显驱动有点老,只能支持到opengl3.0,所以讲默认显卡设置为独显. 开发环境:vs2010 PS:查看机器及显卡支持的OpenGL版本可以使用工具GPU_Caps_Viewer_v1.18.1或者更高版本 二.OpenGL拓展包下载: 2.1 GLEW:windows开发环境,默认只支持opengl1.1的…
一.简介 高级着色语言(High)可以编写顶点着色器和像素着色器,取代固定功能流水线中的部分功能,在图形卡的GPU(Graphics Processing Unit,图形处理单元)中执行 注意:如果图形卡不支持顶点着色器和像素着色器,可以切换为REF设备,但是这个设备会运行很慢 Shader language目前有3种主流语言:基于OpenGL的GLSL(OpenGL Shading Language) 基于Direct3D的HLSL(High Level Shading Language) N…
有些事情本身就是十分奇怪的.在传统上,图形硬件的设计目的是用于快速执行相同的硬编译指令集.不同的计算步骤可以被跳过,参数可以被调整,但计算本身确实固定不变的.然而,随着技术的发展,却越来越变得可以编程了.着色语言,都有些OUT了,CUDA.OPENCL什么的越来越大行其道了.当然,在这里,主要还是介绍着色语言.有些东西很新,但是却不成熟.有些东西很旧,很老土,却仍然很好用,就连OPENGL不带着色语言,现在仍然能做出很好的效果,这也是毋庸置疑的. 传统的或称是旧式的OPENGL渲染管线的操作过程…
这篇文章给大家讲Obj模型里一些基本功能的完善,包含Cg着色语言,矩阵转换,光照,多重纹理,法线贴图的运用. 在上篇中,我们用GLSL实现了基本的phong光照,这里用Cg着色语言来实现另一钟Blinn-phong光照模型,平常我们说语言只是手段,关键是怎么运用,这个用在如一些高级编程语言上,我们或多或少有不同想法,但是在着色语言上,我认为太对了.因语法都是基于C,C++来的,并且去除很多高级特性,可以说语法都是简单到了差不多了,关键在于他内置的一些传递参数的区别上,下来让我们用Cg着色器语言来…