先看下面的效果图:
没有灯光,没有设置材质属性,没有绘制球体,更加没有设置球体的漫反射系数。。。其实是将一个特殊的纹理映射到一个圆上的结果。
纹理生成函数,类似棋盘函数,所以只需将红皮书上棋盘函数稍作修改:
就可以生成下图中的贴图。
如上图左图:在纹理坐标系中,圆形区域的半径为0.5。
x = ( cos (theta*i)+1 ) * 0.5;
y = ( sin (theta*i)+1 ) * 0.5;
可以取得圆形区域的所有的纹理坐标值。而且满足( 0<=x<=1, 0<=y<=1)
然后将圆形区域映射到一个圆形区域上。
代码如下:
通过调用函数draw_circle(2.0, 20); 即可实现图中的效果。
当然了改变颜色只需要修改函数makeCheckImage中的
//灰色
checkImage[i][j][0] = (GLubyte) c;
checkImage[i][j][1] = (GLubyte) c;
checkImage[i][j][2] = (GLubyte) c;
//红色
checkImage[i][j][0] = (GLubyte) c;
checkImage[i][j][1] = (GLubyte) 0;
checkImage[i][j][2] = (GLubyte) 0;
//绿色
checkImage[i][j][0] = (GLubyte) 0;
checkImage[i][j][1] = (GLubyte) c;
checkImage[i][j][2] = (GLubyte) 0;
add by RYF 2013-1-25
本文主要函数纹理,结合该纹理,结合alpha融合 可以绘制抗锯齿的线条:http://answers.oreilly.com/topic/1669-how-to-render-anti-aliased-lines-with-textures-in-ios-4/