Я использую OpenGl 3 и учебник от BennyBox на Youtube.Создание шейдеров Opengl
Используя этот метод:
static void CheckShaderError(GLuint shader, GLuint flag, bool isProgram, const std::string& errorMessage){
GLint success = 0;
GLchar error [1024] = {0};
if(isProgram){
glGetProgramiv(shader, flag, &success);
}else{
glGetShaderiv(shader, flag, &success);
}
if(success == GL_FALSE){
if(isProgram){
glGetProgramInfoLog(shader, sizeof(error), NULL, error);
}else{
glGetShaderInfoLog(shader,sizeof(error), NULL, error);
}
std::cerr<< errorMessage<< ": " << error<< "'"<<std::endl;
}
}
я должен быть в состоянии загрузить файл шейдера (фрагмент и вершинные шейдеры). Он работает с основными шейдеры, но когда я пытаюсь изменить их к этому:
#version 120
attribute vec3 position;
attribute vec2 texCoord;
varying vec2 texCoord;
void main(){
gl_Position = vec4(position, 1.0);
texCoord0 = texCoord;
}
я получаю:
Error compiling shader!: 'ERROR: 0:6: 'texCoord' : redefinition
ERROR: 0:11: 'texCoord0' : undeclared identifier
ERROR: 0:11: 'assign' : cannot convert from 'attribute 2-component vector of float' to 'float'
и пиксельный шейдер:
#version 120
uniform sampler2D diffuse;
varying vec2 texCoord0;
void main(){
gl_FragColor = texture2D(diffuse, texCoord0);
}
дает:
Unable to load shader: ./res/basicShader.fs
Error linking shader program: 'Attached vertex shader is not compiled.
У меня есть точные s ame в качестве видео, и он отлично работает с использованием основного колорирующего шейдера. Я на Visual Studio 2012.
Alright, что сделал это на самом деле. Я понял, что у меня также была опечатка для sample2D, которая должна быть sampler2d.Я думаю, я не тщательно следил за учебником ... Спасибо за вашу помощь. – Everts
Нет проблем. Рад помочь. –