在表面上,以及在许多基本应用程序中,OpenGL®颜色似乎非常易于使用。但是,渲染器中的某些情况和细节有时会被忽略,从而在场景中导致意外结果。这些可能是由颜色的深度或硬件设置引起的。其他时候,诸如着色模式之类的简单事情可能会被忽略,渲染的结果也会出乎意料。最后,在OpenGL®颜色上运行的更复杂的机制,如照明和材质,会极大地影响最终输出的外观。。
在使用OpenGL®的程序中,需要确保的一件事是设置了所有正确的变量。这意味着在渲染之前,确保根据需要将着色模式设置为“平坦”或“平滑”。颜色的顺序也应设置为预期值。虽然几乎所有的程序都使用红、绿、蓝(RGB)顺序,但在图像格式和其他因素中,可以更容易地反转顺序并使用蓝、绿、红(BGR)模式。
OpenGL®颜色的一个有时被忽略,有时也很困难的元素是颜色深度。尽管开发中的程序可能被创建为使用开发系统监视器的颜色深度,但另一个用户的监视器的深度可能不同。这意味着,如果程序是使用24位颜色深度开发的,并且在具有16位颜色深度或索引颜色模型的系统上运行,则场景将无法正确渲染,并且程序可能无法工作。建立和调整可用的颜色深度可以避免此类挫折。。
OpenGL®颜色的两个区域具有广泛的细微差别,能够产生不想要的结果,即照明和材质系统。使用照明时,重要的是要考虑灯光与对象的交互方式以及灯光的潜在颜色(如果已定义)。如果放置和设置不当,光源可能会洗掉颜色或改变其外观。实验可能是在保持场景气氛和准确渲染颜色之间找到正确平衡的唯一方法。。
材质系统可以完全更改对象表面上的OpenGL®颜色。将“环境光”、“漫反射”或“镜面反射”值设置得太高可能会导致对象渲染为完全白色,而其他设置可能会使对象变黑或不可见。场景光源上的设置也会使材质系统复杂化。使用材质时,通过详细了解每个属性的作用,可以避免许多问题。
最后,了解OpenGL®颜色中使用的alpha通道非常重要。这是确定对象透明度的颜色的RGB值之外的第四个值。许多程序员在尝试设置alpha值以生成半透明对象时感到沮丧,但后来发现漫反射属性颜色专门用于确定整个对象的alpha值。无论以后如何变换,对象的绘图顺序也会决定alpha值的工作方式。这意味着,由于渲染顺序的原因,透明对象然后变换到稍后绘制的对象前面的位置的对象将不会显示其后面的对象。。
...windowsxp下,直到我能看到显示器上旋转的三角形。发生了什么,CPU(首先处理.exe)和GPU(最后输出屏幕上的三角形)是如何交互的? 我想显示这个旋转三角形主要涉及以下硬件/软件: 硬件 硬盘驱动器 系统内存(RAM) 中央处...
... 有许多OpenGL®书籍可用,从学习OpenGL®的入门教程到非常详细的库规范和抽象编程接口(API)。不同的因素可以决定哪些书籍最适合特定的OpenGL®项目,包括正在开发的实际应用程...
... 有许多Open Graphics Library®(OpenGL®)软件开发工具包(SDK)可供使用,尽管许多工具包专门针对特定用途。图形卡和硬件的开发人员通常提供一个OpenGL®SDK,该SDK在代码示例和文档方面相当完整,但...
... 无论软件最终执行什么功能,最好的OpenGL®软件都有一些其他程序可能没有的功能。一个使用OpenGL®作为主要图形界面的好程序应该在它的某个地方清楚地说明程序所依赖的OpenGL®版本。它还...
...机的高级或低级方面也很重要,这取决于程序员想要创建什么。 ...
Open Graphics Library®(OpenGL®)混合工具对于生成不同颜色、引入透明度和生成渲染良好的图像非常重要,但有时很难使用。在使用OpenGL®混合之前,必须应用一些编程来启用...
OpenGL®深度缓冲区是三维(3D)图形程序员最容易误解、最复杂、最有用的工具之一。有几种方法可以优化缓冲区,从而提高程序的帧速率,包括正确设置近剪裁平面和远剪...
...码,进行OpenGL®游戏编程的人可以直接看到其他人编写了什么来实现特定效果或在游戏中创建对象。这些样本通常由其他人提供给其他人使用。虽然示例代码可能不适用于所有OpenGL®游戏编程,但它至少可以提供其他人所做工作...
OpenGL®照明是三维(3D)计算机图形编程中最复杂、有时最难理解的方面之一。它可以用于为渲染场景添加必要的、逼真的收尾处理,但它也可能在计算上要求很高,并且在...
一旦编写了一个程序,优化代码和数据文件所需的时间通常与编写代码所需的时间一样长。当试图提高OpenGL®性能时,尤其如此。许多因素都会影响性能,从纹理文件的大小...