在BlackBerry上使用OpenGL绘图(十一):纹理数组

11 纹理数组

现实世界中的物体由不同的材质组成,表面可能会有不同的花纹,这些特性在模拟的3D世界中无法通过简单的平面实现。为了更好地在3D世界中模拟现实物体,设计人员引入了纹理的概念,主要思路是通过2维图片绘制类似于某种材质表面的图像,然后将2维图片贴附在平面上,形成与现实物体类似的表面。

 

在OpenGL中使用特定方法为某个平面指定纹理,然而在OpenGL ES中,为了节省资源,只提供了指定纹理数组的方法glTexCoordPointer()。纹理数组的使用和法向量数组的使用类似,通过一个数组为不同的顶点指定纹理参数,由系统计算出纹理图片在模型表面的展现形式。

 

在详细了解纹理数组的使用之前,首先需要了解在OpenGL ES中使用纹理数组的前提条件。

 

为了使用纹理数组,开发人员首先要启动纹理支持,纹理支持的启动通过在glEnable方法中使用GL10.GL_TEXTURE_2D实现。OpenGLDemo 样例中,该方法在CubeRenderer的contextCreated方法中调用:

            gl.glEnable(GL10.GL_TEXTURE_2D);

参数GL10.GL_TEXTURE_2D表示使用2维纹理。在OpenGL中,纹理可以是一维的,也可以是二维的或者是三维的。一维纹理就像一条线,可以认为是宽度为1的二维纹理,一般使用在边框等细长的表面上。二维纹理像是一张图,使用于模型的表面。三维纹理则像一个立方体,可以指定立方体内任一点的纹理特点。三维纹理可以作用于模型内部,使用这种纹理后对模型取一个截面仍能看到纹理效果,这是二维纺理所不能做到的。

 

对于一维纹理,需要时可以通过二维纹理来实现,而三维纹理对于嵌入设备而言太过于复杂,所以在OpenGL ES中只支持二维纹理。虽然在OpenGL ES中只支持二维纹理,在使用它之前还是需要通过方法glEnable(GL10.GL_TEXTURE_2D)显式地启用它。

 

启用纹理支持后需要创建纹理所使用的图片,一些简单的纹理图片可以直接通过程序计算得出,比如黑白相间的国际象棋棋盘这样的图片,而复杂的纹理图片一般都通过导入图像资源的方式实现,如实例中使用的BlackBerry的图标。

 

CubeRenderer的contextCreated中的以下方法导入了资源文件夹中名为“BlackBerry.png”的图片。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值