Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将着色器附加到程序时出现OpenGL错误#1281_C++_C_Opengl_Shader_Glew - Fatal编程技术网

C++ 将着色器附加到程序时出现OpenGL错误#1281

C++ 将着色器附加到程序时出现OpenGL错误#1281,c++,c,opengl,shader,glew,C++,C,Opengl,Shader,Glew,在将编译后的着色器附加到我的程序时,我遇到OpenGL错误#1281。 以下是顶点着色器代码: #version 330 core layout(location = 0) in vec2 position; void main(){ gl_Position = vec4(position, 0.0f, 0.0f); } #version 330 core out vec4 color; void main(){ color = vec4(1.0f, 0.0f, 0.0f, 1

在将编译后的着色器附加到我的程序时,我遇到OpenGL错误#1281。 以下是顶点着色器代码:

#version 330 core

layout(location = 0) in vec2 position;

void main(){
  gl_Position = vec4(position, 0.0f, 0.0f);
}
#version 330 core

out vec4 color;

void main(){
  color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
}
以下是片段着色器代码:

#version 330 core

layout(location = 0) in vec2 position;

void main(){
  gl_Position = vec4(position, 0.0f, 0.0f);
}
#version 330 core

out vec4 color;

void main(){
  color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
}
以下是创建着色器(程序)的方法:

Shader::Shader(std::string vsfilename,std::string fsfilename)
:程序(glCreateProgram()){
const char*vscode=fileToString(vsfilename.c_str());
const char*fscode=fileToString(fsfilename.c_str());
无符号整数vs,fs;
//编译顶点着色器
vs=glCreateShader(GL_顶点_着色器);
glShaderSource(vs,1,&vscode,NULL);
glCompileShader(vs);
int结果;
glGetShaderiv(vs、GLU编译状态和结果);
如果(!结果){
glGetShaderiv(vs、GL信息、日志长度和结果);
char*infolog=(char*)malloc(result*sizeof(char));
glGetShaderInfoLog(vs,result,&result,infolog);

std::coutError 1281表示无效的_值,如果程序或着色器不是OpenGL生成的值,则生成该值

的第一个参数是程序,第二个参数是着色器:

glAttachShader(vs,program);

格拉塔沙德(项目,vs);
哈哈哈,谢谢。赞成票