有关OpenGL着色语言(一)

刚接触OpenGL着色语言...,不定期增加内容

1.OpenGL着色语言(GLSL)是什么?

用于OpenGL的面向过程的高级着色语言,是近年来图形编程领域中出现的最重要的新型开发技术,使用OpenGL着色语言可以让开发人员控制图形处理管线中最重要的阶段.既然是一种面向过程的编程语言,那么就有语法和语义,有了语法和语义就可以编写程序实例(着色器,一个程序实例就是一个着色器).既然是基于OpenGL的,那么就说明可以使用OpenGL的函数去创建和操作这种语言(着色语言).

2.使用着色语言的好处是什么?

让应用程序对图形处理管线的大多数重要阶段加以完全控制,软件开发人员不再局限于硬件设计人员选择并固化在芯片中的图形渲染算法和公式,而是开始使用这种可编程能力灵活的使用图形渲染算法和公式,根据一个普通的如3DS模型,无需任何纹理贴图就可创造形形色色的效果,可以把计算机图形学发挥到了极致.

3.为什么会产生着色语言?

开发商制造的所有的图形硬件都是可编程的(为应用程序开发人员提供对这种编程能力的访问正是OpenGL着色语言的目的).因为OpenGL扩展的激增以及对支持M.S.不停升级的D.X API的需要,硬件开发商别无选择,只能设计可编程的图形架构.

时间: 2024-08-07 18:15:01

有关OpenGL着色语言(一)的相关文章

《OpenGL着色语言》理解点记录三

“帧缓冲区”中的“帧”的含义? “帧”是连续图像中的一幅,3D可视化程序最终都是转化为一幅幅的图像输出在显示器上,这一幅幅的图像叫做叫“帧”. 解释“glBlendFunc(GL_SRC_ALPHA,GL_ONE);”的含义. 假定源颜色值为(0.3,0.4,0.6,0.5),目标颜色值为(0.5,0.8,0.3,1.0),OpenGL则首先获得源物体的alpha值0.5,用它做混合因子,乘上源物体的各颜色分量,得到(0.15,0.2,0.3),然后选择1作为目标混合因子乘上目标物体各颜色分量得

《OpenGL着色语言》理解点记录二

别人提到“OpenGL的处理管线”时,意味着什么? 准确的讲,应该是“OpenGL图形处理管线”,“管线”带有特定的顺序,在OpenGL中就是Graphics Processing Pipeline.在OpenGL中更像一个流程图,流程图基本架构从来都没有变过. “向OpenGL发送几何数据”指的是什么? 顶点位置.颜色.法线.纹理坐标.雾化坐标等. “向OpenGL发送几何数据”有几种方式? 一种三种:1.“一次一个顶点”,通过glBegin()...glEnd()实现 2.使用顶点数组,通过

WebGL中的OpenGL着色器语言

在webgl中,调用了OpenGL-ES-2.0的API,而在OpenGL-ES专为嵌入式设备设计,其和其它设备一样,都是使用GLSL(GL Shading Language)来编写片段程序并执行于GPU的着色器上,来完成对对象的渲染.GLSL在其中起着相当重要的作用,所以要玩好webgl,我们就得把GLSL搞懂,本文主要介绍shader的基础使用及组成. 整个管线处理过程: 1.指定几何对象 1.顶点数组(直接将顶点数据传送至shader里) 2.顶点索引(将顶点数据保存于缓冲区中,用索引来从

HLSL GLSL CG着色语言比较

摘抄"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在

《交互式计算机图形学 基於OpenGL着色器的自顶向下方法(第6版) 》代码运行问题及其解决

上一篇文章,笔者提到了红宝书第8版的代码编译运行问题,想必大家已经知道我看过红宝书了. 然而,笔者竟然看不懂,这是因为笔者并不知道OpenGL的历史.原来有古代OpenGL和现代OpenGL之分,古代OpenGL使用固定功能管线,现在已经被废弃(尽管还能用),而现代使用可编程管线. 由于笔者在网上搜索一通,见到怎么OpenGL的代码有两种风格,到了现在才搞懂.原来OpenGL在第8版之前都是讲的固定功能管线,到了第8版立即转成了可编程管线.然而红宝书已经认定了你有一定的计算机图形学基础,因此介绍

OpenGL ES着色语言-光照效果之散射光

OpenGL光照模型,在固定管线中,主要是调用OpenGL函数实现,如果使用着色器,该怎么实现.本文的例子是移植OpenGL 4.0 Shading Language Cookbook中第二章的例子.代码已经移植到Android上. 散射光计算主要涉及到两个向量,第一个是顶点到光源的向量S,以及顶点处的法向量N.光照计算在眼睛坐标中进行.具体见下图所示: 有这两个向量之后,还要考虑顶点处的漫反射系数以及光源强度,最终顶点处的光照强度的结果可以通过下列公式计算: Ld为光源强度,Kd为漫反射系数.

高级着色语言简介

HLSL中提供的true和false关键字与C++相同. int:32位有符号整数 half:16位浮点数 float:32位浮点数 double:64位浮点数 float2 float3 float4 分别为 2D 3D 4D向量. 复合分量:(以下为复制操作)不一定要复制每个分量,可以只复制x.y分量. float4 u = {1.0f, 2.0f, 3.0f, 4.0f}; float4 v = {0.0f, 0.0f, 5.0f, 6.0f}; v = u.wyyx; // v = {4

OpenGL着色器中原六仔平台搭建程序解析--3D拾取

3D拾取指的是中原六仔平台搭建论坛:haozbbs.com Q1446595067 将鼠标在屏幕上点击的位置匹配到3d游戏场景中的某个图元上,该图元投影到屏幕上的像素恰好就是鼠标点击的像素.3D场景在很多交互情境中有重要作用,使开发者的应用能够将用户的点击对应到场景空间中的物体上.例如:用户可以通过点击选中某个物体或者物体的某一部分进行删除等后续操作.在这个教程中的demo中,我们将渲染几个物体,并且展示如何使用红色标记选中的三角形图元使其突出显示. 为了实现3D拾取,我们将用到第23章阴影贴图

HLSL-高级着色语言简介【转】

HLSL-High Level Shader Language 优点 用来书写Vertex Shader和Pixel Shader程序的代码,语法类似于C/C++,在DirectX 8.x的时代,Shader程序都是用低级Shader汇编语言编写的,姑且称之为LLSL吧,HLSL与之相比具有以下优点: 更高的生产力,使用HLSL编程更快更容易,使我们有更多的时间关注与算法而不是编码 更好的可读性,使用HLSH编写的程序更易读,易调试及维护 编译器将生成更加高效的汇编代码 可以将同一份代码编译成任