I am making a shader with opengl with the help of a tut. I know that there are some things wrong with this but can someone help me fix this and also give any tips if you have any.\
Shader.h
Code:#include <GL/glew.h> // Include the GLEW header file #include <GL/glut.h> // Include the GLUT header file #ifndef __SHADER_H #define __SHADER_H #if ( (defined(__MACH__)) && (defined(__APPLE__)) ) #include <stdlib.h> #include <OpenGL/gl.h> #include <GLUT/glut.h> #include <OpenGL/glext.h> #else #include <stdlib.h> #include <GL/glew.h> #include <GL/gl.h> #include <GL/glut.h> #include <GL/glext.h> #endif #include <string> class Shader { public: Shader(); Shader(const char *vsFile, const char *fsFile); ~Shader(); void init(const char *vsFile, const char *fsFile); void bind(); void unbind(); unsigned int id(); private: unsigned int shader_id; unsigned int shader_vp; unsigned int shader_fp; }; #endif
I know that there are some problems with this because visual c++ underlines some things red, but could you point uot some problems for me? thanks in ahead.Code:#include <Shader.h> #include <GL/glew.h> // Include the GLEW header file #include <GL/glut.h> // Include the GLUT header file #include <shader.h> #include <string.h> #include <iostream> #include <stdlib.h> using namespace std; static char* textFileRead(const char *fileName) { char* text; if (fileName != NULL) { FILE *file = fopen(fileName, “in”); if (file != NULL) { fseek(file, 0, SEEK_END); int count = ftell(file); rewind(file); if (count > 0) { text = (char*)malloc(sizeof(char) * (count + 1)); count = fread(text, sizeof(char), count, file); text[count] = ‘'; } fclose(file); } } return text; } Shader::Shader() { } Shader::Shader(const char *vsFile, const char *fsFile) { init(vsFile, fsFile); } void Shader::init(const char *vsFile, const char *fsFile) { shader_vp = glCreateShader(GL_VERTEX_SHADER); shader_fp = glCreateShader(GL_FRAGMENT_SHADER); const char* vsText = textFileRead(vsFile); const char* fsText = textFileRead(fsFile); if (vsText == NULL || fsText == NULL) { cerr << “Either vertex shader or fragment shader file not found.“ << endl; return; } glShaderSource(shader_vp, 1, &vsText, 0); glShaderSource(shader_fp, 1, &fsText, 0); glCompileShader(shader_vp); glCompileShader(shader_fp); shader_id = glCreateProgram(); glAttachShader(shader_id, shader_fp); glAttachShader(shader_id, shader_vp); glLinkProgram(shader_id); } Shader::~Shader() { glDetachShader(shader_id, shader_fp); glDetachShader(shader_id, shader_vp); glDeleteShader(shader_fp); glDeleteShader(shader_vp); glDeleteProgram(shader_id); } unsigned int Shader::id() { return shader_id; } void Shader::bind() { glUseProgram(shader_id); } void Shader::unbind() { glUseProgram(0); }




Reply With Quote