opengl着色器编程的debug

因为着色编程中很多东西都是在GPU上运行的不能像cpu那样可以实时的获得错误信息必须要用一些函数来获得的:



1.   检测 着色器编译错误的原因:

     

GLint result1;
	glGetShaderiv(vertShader, GL_COMPILE_STATUS, &result1);
	if (GL_FALSE == result1)
	{
		fprintf(stderr, "Vertex shader compilation failed!\n");
		GLint logLen;
		glGetShaderiv(vertShader, GL_INFO_LOG_LENGTH, &logLen);
		if (logLen > 0)
		{
			char *log = (char*)malloc(logLen);
			GLsizei written;
			glGetShaderInfoLog(vertShader, logLen, &written, log);
			fprintf(stderr, "shader log:    %s\n", log);
			free(log);
		}
	}


2.检测着色器的连接错误:


GLint result;  
    glGetShaderiv(programHandle, GL_COMPILE_STATUS, &result);  
    if (GL_FALSE == result)  
    {  
        fprintf(stderr, "vertex shader compilation failed\n");  
        GLint loglen;  
        glGetProgramiv(programHandle, GL_LINK_STATUS, &loglen);  
        if (loglen > 0)  
        {  
            char*log = (char*)malloc(loglen);  
            GLsizei written;  
            glGetProgramInfoLog(programHandle, loglen, &written, log);  
            fprintf(stderr, "shader log:%s\n", log);  
            free(log);  
        }  
    }  
    else  
    {  
         glUseProgram(programHandle);  
    }  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值