《OpenGL编程指南》一2.1 着色器与OpenGL

2.1 着色器与OpenGL

现代OpenGL渲染管线严重依赖着色器来处理传入的数据。如果不使用着色器,那么用OpenGL可以做到的事情可能只有清除窗口内容了,可见着色器对于OpenGL的重要性。在OpenGL 3.0版本以前(含该版本),或者如果你用到了兼容模式(compatibility profile)环境,OpenGL还包含一个固定功能管线(fixed-function pipeline),它可以在不使用着色器的情况下处理几何与像素数据。从3.1版本开始,固定功能管线从核心模式中去除,因此我们必须使用着色器来完成工作。
无论是OpenGL还是其他图形API的着色器,通常都是通过一种特殊的编程语言去编写的。对于OpenGL来说,我们会使用GLSL,也就是OpenGL Shading Language,它是在OpenGL 2.0版本左右发布的(在之前它属于扩展功能)。它与OpenGL的发展是同时进行的,并通常会与每个新版本的OpenGL一起更新。虽然GLSL是一种专门为图形开发设计的编程语言,但是你会发现它与“C”语言非常类似,当然还有一点C++的影子。
本章将介绍编写着色器的方法,以循序渐进的方式讲解GLSL,讨论如何编译着色器并且与应用程序相结合,以及如何将应用程序中的数据传递到不同的着色器中。

时间: 2024-10-24 09:59:56

《OpenGL编程指南》一2.1 着色器与OpenGL的相关文章

《OpenGL编程指南》一1.2 初识OpenGL程序

1.2 初识OpenGL程序 正因为可以用OpenGL去做那么多的事情,所以OpenGL程序有可能会写得非常庞大和复杂.不过,所有OpenGL程序的基本结构通常都是类似的,其步骤如下:初始化物体渲染所对应的状态.设置需要渲染的物体.在阅读代码之前,我们有必要了解一些最常用的图形学名词.渲染(render)这个词在前文中已经多次出现,它表示计算机从模型创建最终图像的过程.OpenGL只是其中一种渲染系统,除此之外,还有很多其他的渲染系统.OpenGL是基于光栅化的系统,但是也有别的方法用于生成图像

《OpenGL编程指南(原书第9版)》——2.1 着色器与OpenGL

2.1 着色器与OpenGL 现代OpenGL渲染管线严重依赖着色器来处理传入的数据.如果不使用着色器,那么用OpenGL可以做到的事情可能只有清除窗口内容了,可见着色器对于OpenGL的重要性.在OpenGL 3.0版本以前(含该版本),或者如果你用到了兼容模式(compatibility prof?ile)环境,OpenGL还包含一个固定功能管线(f?ixed-function pipeline),它可以在不使用着色器的情况下处理几何与像素数据.从3.1版本开始,固定功能管线从核心模式中去除

《OpenGL编程指南(原书第9版)》——2.3 OpenGL着色语言概述

2.3 OpenGL着色语言概述 本节将会对OpenGL中着色语言的使用进行一个概述.GLSL具备了C++和Java的很多特性,它也被OpenGL所有阶段中使用的着色器所支持,尽管不同类型的着色器也会有一些专属特性.我们首先介绍GLSL的需求.类型,以及其他所有着色阶段所共有的语言特性,然后对每种类型的着色器中的专属特性进行讨论.2.3.1 使用GLSL构建着色器 我们将在这里介绍如何创建一个完整的着色器. 从这里出发 一个着色器程序和一个C程序类似,都是从main()函数开始执行的.每个GLS

《OpenGL编程指南》一2.3 OpenGL着色语言概述

2.3 OpenGL着色语言概述 本节将会对OpenGL中着色语言的使用进行一个概述.GLSL具备了C++和Java的很多特性,它也被OpenGL所有阶段中使用的着色器所支持,尽管不同类型的着色器也会有一些专属特性.我们首先介绍GLSL的需求.类型,以及其他所有着色阶段所共有的语言特性,然后对每种类型的着色器中的专属特性进行讨论. 2.3.1 使用GLSL构建着色器 从这里出发 一个着色器程序和一个C程序类似,都是从main()函数开始执行的.每个GLSL着色器程序一开始都如下所示: 这里的//

《OpenGL编程指南(原书第9版)》——导读

前言 OpenGL图形系统是图形硬件的一种软件接口(GL表示Graphics Library,即图形库).它使得用户可以创建交互式的程序以产生运动的三维对象的颜色图像.通过OpenGL,我们可以使用计算机图形学技术产生逼真的图像,或者通过一些虚构的方式产生虚拟的图像.这本指南将告诉你如何使用OpenGL图形系统进行编程,得到你所期望的视觉效果. 本书的主要内容 本书中包含以下章节: 第1章对OpenGL可以完成的工作进行了概览.它还提供了一个简单的OpenGL程序并解释了一些本质性的编程细节,它

《OpenGL编程指南》一导读

前言 Preface OpenGL图形系统是图形硬件的一种软件接口(GL表示Graphics Library,即图形库).它使得用户可以创建交互式的程序以产生运动的3维对象的颜色图像.通过OpenGL,我们可以使用计算机图形学技术来产生逼真的图像,或者通过一些虚构的方式产生虚拟的图像.这本指南将告诉你如何使用OpenGL图形系统进行编程,得到你所期望的视觉效果. 目 录 第1章 OpenGL概述1.1 什么是OpenGL1.2 初识OpenGL程序 1.3 OpenGL语法1.4 OpenGL渲

《OpenGL编程指南(原书第9版)》——1.5 第一个程序:深入分析

1.5 第一个程序:深入分析 现在我们来深入探讨一下之前的第一个程序.1.5.1 进入main()函数 为了了解示例程序从一开始是如何运行的,首先了解一下main()函数当中都发生了什么.前面的6行使用GLFW设置和打开了一个渲染用的窗口.这方面的详细介绍可以参见附录A,这里只介绍每一行的执行结果. 第一个函数glfwtInit()负责初始化GLFW库.它会处理向程序输入的命令行参数,并且移除其中与控制GLFW如何操作相关的部分(例如设置窗口的大小).glfwtInit()必须是应用程序调用的第

《OpenGL编程指南》一2.2 OpenGL的可编程管线

2.2 OpenGL的可编程管线 在第1章已经对OpenGL的渲染管线进行了一个概要的介绍,现在将更加详细地介绍它的每个阶段以及其中所承载的工作.4.3版本的图形管线有4个处理阶段,还有1个通用计算阶段,每个阶段都需要由一个专门的着色器进行控制. 1)顶点着色阶段(vertex shading stage)将接收你在顶点缓存对象中给出的顶点数据,独立处理每个顶点.这个阶段对于所有的OpenGL程序都是必需的,并且必须绑定一个着色器.第3章将对顶点着色的操作进行介绍. 2)细分着色阶段(tesse

《OpenGL编程指南(原书第9版)》——2.2 OpenGL的可编程管线

2.2 OpenGL的可编程管线 第1章已经对OpenGL的渲染管线进行了一个概要的介绍,其中我们简述了着色器自身的运行机制,但是并没有讲解第一个例子当中所用到的简单着色器代码的含义.现在将更加详细地介绍它的每个阶段以及其中所承载的工作.4.5版本的图形管线有4个处理阶段,还有1个通用计算阶段,每个阶段都需要由一个专门的着色器进行控制. 1)顶点着色阶段(vertex shading stage)将接收你在顶点缓存对象中给出的顶点数据,独立处理每个顶点.这个阶段对于所有的OpenGL程序都是唯一