glUniform1i(int,Bool)与glUniform1i(int,int)

时间:2014-07-15 17:09:20

标签: opengl-es opengl-es-2.0 gpuimage android-gpuimageview

我正在尝试将一些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文档中挖了一下,但似乎找不到合适的翻译......

想法?

1 个答案:

答案 0 :(得分:2)

等什么? glUniform1i在两种情况下都需要2个整数。为什么开发人员插入一个布尔值我不知道。无论如何,iOS布尔值转换为YES(true)= 1和NO(false)= 0.此值可能在着色器中用作if(colorOnUniform == 0)...; else...;

这种方法可能应该是这样的:

- (void)setColorOn:(BOOL)yes
{
    glUniform1i(colorOnUniform, yes?1:0);
}

问题解决了......