小编hao*_*hao的帖子

用于"id(*IMP)(id,SEL,...)"的第二个参数是什么?

我的问题就像标题所说的那样.显然,第一个参数用于这个指针,有点像c ++.第二个怎么样?谢谢你

objective-c gnustep

1
推荐指数
1
解决办法
441
查看次数

我的着色器通过glUniform1i使用纹理有什么问题

在我使用GLSL程序进行纹理处理时,只有一个纹理绑定到纹理单元0.如下所示:

.......................
        glActiveTexture(GL_TEXTURE0);
        GLuint tid;
        glGenTextures(1, &tid);
        glBindTexture(GL_TEXTURE_2D, tid);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img.width, img.height, 0,
                     img.format, GL_UNSIGNED_BYTE, img.data);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
Run Code Online (Sandbox Code Playgroud)

然后通过统一变量通知frag着色器(如setUniform所做),这里的名称是"texture0",对应于我的frag着色器:

void CShader::setUniform( const char *name, int val )
    {
        int loc = getUniformLocation(name);
        glAssert();  //note!,my own assertion wrapping around glGetError.
              if( loc >= 0 )
        {
            glUniform1i(loc, val);

        } else {
            printf("Uniform: %s not found.\n",name);
        }
              glAssert();   //note!,my own assertion wrapping around glGetError.

    }
Run Code Online (Sandbox Code Playgroud)

这超出了我的期望,它在最后glAssert()一行声称失败,并且给了我GL_INVALID_OPERATION.有什么不对,我的显卡不支持这个操作吗?,它不可能,我的OpenGL版本是3.x. 经过几个小时的挣扎,尝试评论了最后一次glAssert(),但另一个断言在我的gldrawelements电话中失败了.显然,我绝对认为gldrawelements …

opengl glsl

1
推荐指数
1
解决办法
4458
查看次数

标签 统计

glsl ×1

gnustep ×1

objective-c ×1

opengl ×1