ShaderManager.java 文件源码

java
阅读 24 收藏 0 点赞 0 评论 0

项目:BaseClient 作者:
public void useShader()
{
    this.isDirty = false;
    staticShaderManager = this;
    this.field_148016_p.func_148109_a();

    if (this.program != currentProgram)
    {
        OpenGlHelper.glUseProgram(this.program);
        currentProgram = this.program;
    }

    if (this.useFaceCulling)
    {
        GlStateManager.enableCull();
    }
    else
    {
        GlStateManager.disableCull();
    }

    for (int i = 0; i < this.shaderSamplerLocations.size(); ++i)
    {
        if (this.shaderSamplers.get(this.samplerNames.get(i)) != null)
        {
            GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit + i);
            GlStateManager.enableTexture2D();
            Object object = this.shaderSamplers.get(this.samplerNames.get(i));
            int j = -1;

            if (object instanceof Framebuffer)
            {
                j = ((Framebuffer)object).framebufferTexture;
            }
            else if (object instanceof ITextureObject)
            {
                j = ((ITextureObject)object).getGlTextureId();
            }
            else if (object instanceof Integer)
            {
                j = ((Integer)object).intValue();
            }

            if (j != -1)
            {
                GlStateManager.bindTexture(j);
                OpenGlHelper.glUniform1i(OpenGlHelper.glGetUniformLocation(this.program, (CharSequence)this.samplerNames.get(i)), i);
            }
        }
    }

    for (ShaderUniform shaderuniform : this.shaderUniforms)
    {
        shaderuniform.upload();
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号