光源和材质的操作比较复杂,在大部分开发中不会遇到,在这里仅做简单介绍。
首先,在绘制图形前,需要开启光源。
GL.glEnable glcLight0 GL.glEnable glcLighting
光源开启运行结果如图3-21所示。
图3-21 光源开启运行结果
在OpenGL中,灯光默认为黑色,其显示结果为灰色。
Dim Amb(4)As GLfloat Amb(1)= 0 Amb(2)= 0 Amb(3)= 0 Amb(4)= 1 GL.glLightfv ltLight0, lpmAmbient, Amb(1) GL.glEnable glcLight0 GL.glEnable glcLighting
在以上代码中,增加了白光的环境光。VB语言没有指针的概念,其对全数组的引用只需使用第一个数组序号。白光运行结果如图3-22所示,什么都没有显示。
图3-22 白光运行结果
物体表面的色彩是环境光和物体相互作用的结果。因此,我们需要增加物体表面的材质。当物体表面颜色或者是物体面太多的时候,指定材质变得很困难。此时可以采用一个简单的办法:颜色跟踪。
我们添加以下代码:
GL.glEnable GL.GL_COLOR_MATERIAL GL.glColorMaterial faceFrontAndBack, cmmAmbientAndDiffuse
其运行结果如图3-23所示。
图3-23 颜色跟踪运行结果
颜色跟踪后的运行结果与未使用颜色跟踪的运行结果并没有区别。可以读取一个基于STL文件格式的三维数学模型,然后设置三维显示,就出现了如图3-24和图3-25所示的显示效果。
图3-24 模型读取调整光源
图3-25 不同方位的展示及光源调整