纹理模拟球体漫反射

81 篇文章 2 订阅
62 篇文章 0 订阅

先看下面的效果图:

 

 

 

 

没有灯光,没有设置材质属性,没有绘制球体,更加没有设置球体的漫反射系数。。。其实是将一个特殊的纹理映射到一个圆上的结果。

纹理生成函数,类似棋盘函数,所以只需将红皮书上棋盘函数稍作修改:

 

就可以生成下图中的贴图。

 

 

如上图左图:在纹理坐标系中,圆形区域的半径为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/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值