Opengl相关API

2020-05-07  本文已影响0人  _RG

创建VertexShadere与FragmentShader

创建一个对象,作为shader(着色器)的容器,该函数会返一个容器的句柄,函数原型中的参数shaderType有两种类型,当要创建VertexShader时,开发者应该传入类型GL_VERTEX_SHADER;当要创建FragmentShader时,开发者应该传入GL_FRAGMENT_SHADER类型

GLuint glCreateShader(GLenum shaderType);

为创建的这个shader(着色器)添加源代码,把开发者编写的着色器程序加载到着色器句柄所关联的内存中
void glShaderSource(GLuint shader, int numOfStrings, const char **strings, int *lenOfStrings)

编译该Shader
void glCompileShader(GLuint shader);

验证该Shader是否编译成功了,当返回值为1时,则说明该Shader是编译成功
void glGetShaderiv (GLuint shader, GLenum pname, GLint* params);

如果编译没有成功,那么开发者肯定需要知道到底是着色器代码中的哪一行出了问题
void glGetShaderInfoLog(GLuint object, int maxLen, int *len, char *log);

通过这两个Shader来创建Program(显卡可执行程序)

首先创建一个对象,作为程序的容器,此函数将返回容器的句柄
GLuint glCreateProgram(void)

将把前文编译的Shader附加到刚刚创建的程序中
void glAttachShader(GLuint program, GLuint shader);

链接程序
void glLinkProgram(GLuint program);

检查是否链接成功,查看该程序的状态
glGetProgramiv (GLuint program, GLenum pname, GLint* params);

链接错误,打印链接错误信息
void glGetProgramInfoLog(GLuint object, int maxLen, int *len, char *log);

上一篇下一篇

猜你喜欢

热点阅读