opengl着色器编程的debug
2014-10-15 19:41
134 查看
因为着色编程中很多东西都是在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);
}
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);
}
相关文章推荐
- GPU编程之GLSL(三)——Opengl与着色器通信
- Code::Blocks搭建OpenGL编程环境(着色器)
- opengl编程glsl-着色器
- 基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(三)着色器
- 渲染世界的OPENGL<10>GLSL编程-着色器统一值
- 渲染世界的OPENGL<9>GLSL编程-单位着色器
- opengl编程一(使用着色器)
- OpenGL 编程指南(第八版)学习笔记——2 着色器基础
- OpenGL基础图形编程(二)
- OpenGL中着色器,渲染管线,光栅化
- OpenGL编程低级错误+常见问题简答
- OpenGL的GLSL编程初探
- Linux下的OpenGL编程
- OpenGL编程指南---多边形正反面 剔除
- 基于VC++的OpenGL编程讲座之概述
- OpenGL基础图形编程--纹理映射
- Vulkan编程指南翻译 第六章 着色器和管线 第3节 管线
- VC6.0下opengl编程入门
- 编程综合—先思考后debug
- 用MFC实现OpenGL编程