OpenGL编程指南之glPolygonStipple函数深入理解
最近在读《OpenGL编程指南》-红宝石书,发现3D图形编程真的有趣,游戏API,看书有时候乍一看很费解,但经过反复琢磨,加上在纸上拿尺笔画画,网上参考网友的解释,在看看OpenGL API参考手册,最终困难都会克服的,
下面以该书中第38页的图20-10为例解释一下glPolygonStipple的语法:
下面先上该函数的概念、代码、运行效果图(声明:这3个是原书中截图一下来的)
概念:
代码:
运行截图:
刚开始我也死活不明白一堆的二进制数组,就能画出一个蝗虫效果, 不过理解了这个函数,想画一个超级玛丽的效果也就不远啦!
下面先温习一下基础知识:
1、8421码编码规则(大学数字电路这门课必学),其中ABCD分别代表10、11、12、13
2、在计算机里8对应二进制是1000、4对应0100、5对应0101、3对应0011
3、0x代表十六进制,0x04等价于0x0000 0100
有了上面的基础,加上上面提到的概念里最关键的一句话:数值为1的则填充
我分几个步骤结合截图理解一下,不妥之处请大家多多指教。
步骤一:小黑虫分析图如下
这里分析一下:
1、左图蓝色部分的0x00对应有图里的蓝色部分,0x代表十六进制,00代表0000 0000,没有数字1,所有没画黑点。
2、左图红色部分对应右图的红色部分,也就是最底行的小方块。(注这个二维数组的前4个元素代表最低行的小方块,第5-8个元素表示的是底下第2行,也就是说8位数里,1位数占1个小方块,画不画黑点取决于值是不是1)
3、左图绿色部分对应有图绿色部分,正好8个元素对应2行空格。
下面我拿第9,第10个元素印证一下我的理解,
0x03,等价于0000 0011
0x80,等价于0000 1000
看如下图:
其它元素的值读者可以依据此方法分析,如有说明不清楚的地方,请多多包含!