我正在尝试将一些OpenGLES代码从iOS移植到Android。
在iOS中我有这段代码:
- (void)setColorOn:(BOOL)yes
{
glUniform1i(colorOnUniform, yes);
}
其中glUniform1i()方法将Integer作为Uniform位置和布尔值。
在Android中,我能得到的最接近的是:
public void setColorOn() {
GLES20.glUniform1i(colorOnUniform, 0);
}
其中glUniform1i()方法将Integer作为Uniform位置和另一个Integer,我认为是纹理id ...
我在Kronos文档中挖了一下,但似乎找不到合适的翻译......
想法?
答案 0 :(得分:2)
等什么? glUniform1i
在两种情况下都需要2个整数。为什么开发人员插入一个布尔值我不知道。无论如何,iOS布尔值转换为YES
(true)= 1和NO
(false)= 0.此值可能在着色器中用作if(colorOnUniform == 0)...; else...;
这种方法可能应该是这样的:
- (void)setColorOn:(BOOL)yes
{
glUniform1i(colorOnUniform, yes?1:0);
}
问题解决了......