OpenGraphics Library®(OpenGL®)球体在最基本的层次上是由一系列三角形或四边形组成的三维(3D)对象,这些三角形或四边形的顶点都与中心点等距。这意味着,当从任何角度查看OpenGL®球体时,其轮廓对观看者来说都是一个完美的...
OpenGraphics Library®(OpenGL®)球体在最基本的层次上是由一系列三角形或四边形组成的三维(3D)对象,这些三角形或四边形的顶点都与中心点等距。这意味着,当从任何角度查看OpenGL®球体时,其轮廓对观看者来说都是一个完美的圆,尽管光照和着色可能会使体积看起来更像球体。用于创建OpenGL®球体的顶点数决定了对象在其与实际球体近似时的平滑度,任何少于12个点的点都会创建一个不能被视为球体的对象。即使球体在许多图形应用程序和库中被视为形状基本体,OpenGL®没有任何固有的渲染球体的功能,这意味着需要使用诸如OpenGL®utility toolkit(GLUT)之类的辅助工具包,以避免编写代码来手动生成形状。

OpenGL是一个编程接口,允许软件应用程序创建快速高效的三维场景。在OpenGL®中处理顶点时,可用于生成具有一定平滑度的球体的最少点数为12,创建一个具有20个三角形面(称为二十面体)的对象。如果不进行进一步处理,以这种方式构造的OpenGL®球体将在边缘周围具有可见的锐角,这可能是某些应用程序可以接受的。要获得更圆的球体,每个面都需要进一步细分细分二十面体以增加其包含的顶点数量并形成更平滑的OpenGL®球体需要在每个现有三角形的每个边的中心创建新顶点。这意味着每个三角形面现在将包含四个三角形。细分可以根据需要继续进行,尽管以指数方式添加点可以快速创建一个渲染时间较长且难以转换的对象。尽管OpenGL®sphere为程序员提供了一些数学上的便利,例如表面法线可以很容易地从顶点坐标计算出来,对球体进行纹理处理会带来一些复杂性。使用投射到球体上的标准二维(2D)纹理意味着纹理图像的顶部和底部区域将被压缩,因为三角形的形状靠近球体的极点球体本身是被压缩的。为了克服这个问题,可以使用立方体映射,或者程序员可以手动为对象生成纹理坐标。关于使用实用程序库生成OpenGL®需要注意的一个因素球体。由GLUT或类似工具包生成的球体有时很难在OpenGL®中修改、优化和管理。因此,有时使用自定义编写的代码来生成OpenGL®球体是有益的,这样就可以在程序中以最有效的方式创建并使用它。