OpenGL 绘制彩色六面体(六个面六种颜色)

Android API Demo 中有个 Touch Rotate 的彩色立方体,把这个立方体修改成 -- 每个面有单一不同颜色的长方体。OpenGL可以为顶点着色,OpenGL允许为同一多边形的不同顶点指定不同的颜色。在默认情况下,OpenGL会计算两点顶点之间的其它点,并为它们填上“合适”的颜色,使相邻的点的颜色值都比较接近。如果使用的是RGB模式,看起来就具有渐变的效果。...
摘要由CSDN通过智能技术生成
Android API Demo 中有个 Touch Rotate 的彩色立方体,把这个立方体修改成 -- 每个面有单一不同颜色的长方体。

OpenGL可以为顶点着色,OpenGL允许为同一多边形的不同顶点指定不同的颜色。


在默认情况下,OpenGL会计算两点顶点之间的其它点,并为它们填上“合适”的颜色,使相邻的点的颜色值都比较接近。如果使用的是RGB模式,看起来就具有渐变的效果。如果是使用颜色索引模式,则其相邻点的索引值是接近的,如果将颜色表中接近的项设置成接近的颜色,则看起来也是渐变的效果。但如果颜色表中接近的项颜色却差距很大,则看起来可能是很奇怪的效果。
使用glShadeModel函数可以关闭这种计算,如果顶点的颜色不同,则将顶点之间的其它点全部设置为与某一个点相同。(直线以后指定的点的颜色为准,而多边形将以任意顶点的颜色为准,由实现决定。)为了避免这个不确定性,尽量在多边形中使用同一种颜色。
glShadeModel的使用方法:
glShadeModel(GL_SMOOTH); // 平滑方式,这也是默认方式
glShadeModel(GL_FLAT); // 单色方式

Demo中默认使用glShadeModel(GL_SMOOTH),Demo中为每个顶点设置不同颜色,所以可以看到Demo中是一个渐变色的立方体。想把每个面改成单一的颜色有两种思路:
1. 指定画笔颜色,画一个面,切换画笔颜色,画另一个面,循环上述,将其与四个面出来
可以参考
http://yarin.blog.51cto.com/1130898/380303 的画法。

2. 使用 glShadeModel(GL_FLAT)方式, 为每个顶点指定颜色,在同一平面上的定点颜色一致。那么会遇到的问题是:如果设置长方体有8个顶点,每个顶点被三个面所共有,而三个面的颜色却不一样,解决的办法是把每个顶点拆分成三个点,这样三个点分别为三个面所使用。

/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值