【发布时间】:2012-12-23 12:51:16
【问题描述】:
我有一个汽车的 ipad opengl-es 1.1 应用程序,我希望用户能够更改颜色。 3d 网格是 uv 纹理的,它以基本的灰色开始(带有阴影和高光)。我想向用户展示十几个颜色样本,以给汽车上色。我只是不确定此时我将如何有效/高效地交换颜色。
我的意思是,当前纹理是 1024 x 1024。我是否为我的应用程序中可用的每种颜色都包含一个 1024 x 1024 纹理?我在想可能有一种更简单的方法,如果我可以在原始 1024 x 1024 纹理上为每种颜色定义一个小的 20 x 20 像素表示。然后不知何故,当用户选择颜色样本时,我可以去抓取颜色并将其“应用”到汽车上。这有意义吗?
我已将所有网格照明/颜色烘焙到我的纹理中,因此应用程序本身不使用照明,因此仅尝试更改颜色对我的纹理没有影响。如果我确实使用照明,我可以将灰色纹理与材质颜色变化混合,但我真的不喜欢这个解决方案的外观。我正在寻找纹理特定的解决方案(我认为)
任何想法或建议都会很棒。谢谢!
【问题讨论】:
-
你不能在对象绘制之前调用glColor4f(你想要的颜色)吗?那不应该将您的纹理与所需的颜色混合吗?
-
@Valerie 你说你已经将光照预烘焙到纹理中——你有单独的漫反射和镜面反射纹理吗?如果没有,如果它们已经组合在一起,“现实地”改变汽车的颜色似乎相当困难。