使用OpenGL 关心的不是物理屏幕坐标和像素,而是视景体的位置坐标。将这些点,线和三角形从创建的3D空间投影到计算机屏幕上的2D则是着色去程序和光栅化硬件所要完成的工作。
------------- 点和线
我们将从7个定义的几何图元来开始绘制实心的几何图形。 P65 表3.2
点
点是最简单的图元。默认情况下,点的大小为一个像素。
void glPointSize(GLfloat size);
获取点大小的范围,以及它们之间的最小间隔
GLfloat sizes[2] //存储支持的点大小范围
GLfloat step; //存储支持的点大小增量
//获取支持的点大小范围和步长(增量)
glGetFloatv(GL_POINT_SIZE_RANGE,sizes);
glGetFloatv(GL_POINT_SIZE_GRANULARITY &step):
OpenGL规范只需要支持一个点大小,即1.0,但大多数实现都支持很大范围内的各种点大小。例如,我们可以找到从0.5到256.0之间,最小步长为0.125的各种点大小。
指定一个允许范围之外的点大小并不会被认为是一个错误。相反,在这种情况下将根据哪个值离指定的值最近来使用允许的最大值或最小值代替。
默认情况下,点大小和其他图形不同,它并不受到透视除法的影响。也就是,当它们离视点更远时,它们看上去并不会变得更小;如果它们离视点更近,它们看上去也不会变得更大一些。另外点总是正方形的像素。
为了获得圆点,我们可以在抗锯齿模式下绘制点。
还可以通过编程在顶点着色器或几何着色器中设置点大小,这两种着色器超出了本章所涉及的范围。着色器内建变量为gl_PointSize
-------------- 线