您的位置:首页 > 编程语言

OpenGL编程指南之glPolygonStipple函数深入理解

2012-02-20 00:48 525 查看
        最近在读《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

看如下图:



其它元素的值读者可以依据此方法分析,如有说明不清楚的地方,请多多包含!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编程 api 图形 游戏