什么是opengl®阴影?(an opengl® shadow?)

Open Graphics Library®(OpenGL®)阴影是三维(3D)OpenGL®场景中的一种视觉近似,它描述了在类似照明条件下阴影在现实生活中的投射方式。阴影是在OpenGL®中实现的一项复杂的视觉功能,这主要是因为在场景中投射阴影没有固有的支持。取而代之的是,可以使用各种工具从场景中的对象和几何体创建阴影的各种技术,例如各种可用的缓冲区、着色器,在某些情况下,还可以使用扩展来访问某...

Open Graphics Library®(OpenGL®)阴影是三维(3D)OpenGL®场景中的一种视觉近似,它描述了在类似照明条件下阴影在现实生活中的投射方式。阴影是在OpenGL®中实现的一项复杂的视觉功能,这主要是因为在场景中投射阴影没有固有的支持。取而代之的是,可以使用各种工具从场景中的对象和几何体创建阴影的各种技术,例如各种可用的缓冲区、着色器,在某些情况下,还可以使用扩展来访问某些图形卡上的特殊功能。在大多数情况下,OpenGL®阴影渲染的质量、精度和速度与计算机或设备中图形硬件的处理能力和内存直接相关。实现OpenGL®阴影的一些比较流行的方法包括阴影体积、阴影映射和光线跟踪。

Shadows help to give a 3D image a better sense of depth.

创建具有OpenGL®阴影支持的应用程序需要数学知识和对OpenGL®工作原理的深入理解。OpenGL®主要用于创建动态且实时渲染的3D场景,因此,用于创建阴影的算法不仅必须优化速度,还必须仔细衡量其资源消耗情况以及用于渲染的图形管道中可能造成的任何中断。由于这些原因,创建阴影的最基本方法(称为光线跟踪)通常不适用于全3D场景,因为它可能需要很长时间。

光线跟踪基本上遵循一条假想线或光线,从摄影机的观察平面或位置穿过场景到达对象的表面,然后根据一个或多个光源的位置和其他因素计算表面的颜色。在光栅化过程中,当3D场景被绘制到二维(2D)表面以便显示时,必须对正在绘制的每个像素执行光线跟踪过程,尤其是对于纹理或其他表面属性,可能需要多次评估相同的像素。这意味着实时光线跟踪虽然可以精确地渲染阴影,但通常并不实用。

另一种可用于创建OpenGL®阴影的方法称为阴影映射。此方法使用“深度”或“模具缓冲区”(stencil buffer)从光源角度渲染场景,作为从光源到场景中不同对象表面的一系列距离。然后从正确的视角对场景进行第二次渲染,检查每个像素是否落在缓冲区内的特定距离范围内,以指示该像素是亮还是暗。使用阴影贴图可能会占用大量内存,对于具有多个光源的场景,可能需要从多个角度制作多个贴图。

阴影体积是一种创建OpenGL®阴影的方法,它比其他一些方法更精确,但它也存在自身的问题。阴影体积本质上是场景中不可见的几何体,从对象的照亮表面向远离光源的方向扩展。可以对照其他对象检查此体积,以查看它们是否落入体积起源的曲面的阴影中。此过程可能非常复杂,并在优化速度时最终创建视觉瑕疵。

  • 发表于 2021-12-11 17:40
  • 阅读 ( 153 )
  • 分类:互联网

你可能感兴趣的文章

opengl(opengl)和开放计算语言(opencl)的区别

...编写程序。它们都是用C语言编写的。 覆盖的关键领域 1.什么是OpenGL–定义,功能2.什么是OpenCL–定义,功能3.OpenGL和OpenCL的区别是什么–主要区别的比较 关键术语 OpenGL,OpenCL 什么是opengl(opengl)? OpenGL是一个用于绘制二维和三...

  • 发布于 2021-07-01 12:42
  • 阅读 ( 425 )

什么是opengl®和directx®之间的区别?(the differences between opengl® and directx®?)

Open Graphics Library®(OpenGL®)和DirectX®都是图形渲染程序,但两者之间存在重大差异。游戏程序员通常选择DirectX®,因为它有许多专门用于游戏渲染的功能,而OpenGL®则用于...

  • 发布于 2021-12-08 14:35
  • 阅读 ( 146 )

什么是2d opengl®?(2d opengl®?)

OpenGraphics Library®(OpenGL®)主要是一个编程接口,允许软件应用程序与图形硬件交互,并快速高效地创建三维(3D)场景。使用二维(2D)OpenGL®编程技术,库提供的硬件加...

  • 发布于 2021-12-09 12:26
  • 阅读 ( 129 )

什么是opengl®ati™ 驾驶员(an opengl® ati™ driver?)

开放图形库®(OpenGL®)ATI™ 驱动程序是由ATI开发的软件接口™ 这些技术将成为图形卡硬件和OpenGL®库抽象编程接口(API)之间的桥梁。每个操作系统都有不同的驱动程序,...

  • 发布于 2021-12-11 17:31
  • 阅读 ( 142 )

什么是opengl®位图?(an opengl® bitmap?)

OpenGL®位图可以是两种类型之一,具体取决于使用该术语的上下文。位图的原始含义是一幅图像,其中每个像素位置都存储在一个位中,使其具有一个透明或实心的值。在引...

  • 发布于 2021-12-11 17:32
  • 阅读 ( 106 )

什么是opengl®相机?(an opengl® camera?)

“OpenGL®照相机”是指开放图形库®(OpenGL®)场景中的查看器虚拟位置的名称。它由查看器在场景中的位置定义,然后由查看器查看的位置或方向定义。摄影机在OpenGL®场景...

  • 发布于 2021-12-11 17:33
  • 阅读 ( 101 )

什么是opengl®帧缓冲区?(an opengl® framebuffer?)

...是无用的,除非存在可以绑定效果或纹理的图像;否则,什么也不会出现。使用帧缓冲区时,它会组合其他几个缓冲区,这使得图形资源池比单独使用缓冲区更高效。 ...

  • 发布于 2021-12-11 17:35
  • 阅读 ( 123 )

什么是opengl®插件?(an opengl® plugin?)

OpenGraphics Library®(OpenGL®)插件是一款软件,旨在向一个独立的中央应用程序添加一些基于OpenGL®的功能。对于图形应用程序,OpenGL®插件可以添加通过OpenGL®库处理的新渲...

  • 发布于 2021-12-11 17:37
  • 阅读 ( 120 )

什么是opengl®多边形?(an opengl® polygon?)

Open Graphics Library®(OpenGL®)多边形是在OpenGL®中创建的由两个以上顶点组成的任何对象。本质上,任何不是点或线的对象都被视为多边形。OpenGL®和大多数图形卡通常都有特...

  • 发布于 2021-12-11 17:37
  • 阅读 ( 155 )

什么是opengl®四元模型?(an opengl® quad?)

计算机编程和图形中的OpenGL®四边形或四边形是一种三维(3D)形状,也称为多边形,具有四条边和四个点。表示OpenGL®四边形的单个角点的每个3D点称为顶点,并由三个数字...

  • 发布于 2021-12-11 17:38
  • 阅读 ( 153 )
糯米羊团
糯米羊团

0 篇文章