【问题标题】:glUniform1i(int, Bool) vs. glUniform1i(int, int)glUniform1i(int, Bool) 与 glUniform1i(int, int)
【发布时间】:2014-07-15 17:09:19
【问题描述】:

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

想法?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    问题已解决...

    【讨论】:

    • 哈哈.. 完全...从来没有想过每个案例都将 BOOL 用作 Int...感谢您的关注!
    • 会解释为什么我找不到方法定义!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2021-07-21
    • 2017-12-04
    • 2018-08-06
    • 1970-01-01
    • 2020-09-10
    • 2011-08-14
    相关资源
    最近更新 更多