0

我正在尝试将一些 OpenGLES 代码从 iOS 移植到 Android。

在 iOS 我有这个代码:

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

其中 glUniform1i() 方法将整数作为统一位置和布尔值。

在 Android 中,我能得到的最接近的是:

public void setColorOn() {
        GLES20.glUniform1i(colorOnUniform, 0);
}

其中 glUniform1i() 方法将 Integer 作为统一位置和另一个 Integer,我认为作为纹理 ID ...

我翻遍了 Kronos 文档,但似乎找不到合适的翻译...

想法?

4

1 回答 1

2

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

这个方法大概应该是这样的:

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

问题解决了...

于 2014-07-16T07:08:02.573 回答