diff --git a/opengl-test-two/bin/Debug/opengl-test-two.exe b/opengl-test-two/bin/Debug/opengl-test-two.exe index cba839f..65df034 100644 Binary files a/opengl-test-two/bin/Debug/opengl-test-two.exe and b/opengl-test-two/bin/Debug/opengl-test-two.exe differ diff --git a/opengl-test-two/include/loaders.h b/opengl-test-two/include/loaders.h new file mode 100644 index 0000000..257b499 --- /dev/null +++ b/opengl-test-two/include/loaders.h @@ -0,0 +1,10 @@ +#ifndef LOADERS_H +#define LOADERS_H + +#define GLEW_STATIC +#include + +int InitLoaders(); +GLuint LoadTexture(char *filename,int *textw,int *texth); +GLuint LoadShaders(const char * vertex_file_path,const char * fragment_file_path); +#endif // LOADERS_H diff --git a/opengl-test-two/main.cpp b/opengl-test-two/main.cpp index 1250b2c..7cc4eb6 100644 --- a/opengl-test-two/main.cpp +++ b/opengl-test-two/main.cpp @@ -4,151 +4,9 @@ #include #include #include -#include -#include -#include #include -#include #include - -GLuint LoadTexture(char *filename,int *textw,int *texth) { - SDL_Surface *surface; - GLuint textureid; - int mode; - surface = IMG_Load(filename); - // Or if you don't use SDL_image you can use SDL_LoadBMP here instead: - // surface = SDL_LoadBMP(filename); - - // could not load filename - if (!surface) { - return 0; - } - - // work out what format to tell glTexImage2D to use... - if (surface->format->BytesPerPixel == 3) { // RGB 24bit - mode = GL_RGB; - - } else if (surface->format->BytesPerPixel == 4) { // RGBA 32bit - mode = GL_RGBA; - } else { - SDL_FreeSurface(surface); - return 0; - } - - *textw=surface->w; - *texth=surface->h; - // create one texture name - glGenTextures(1, &textureid); - // tell opengl to use the generated texture name - glBindTexture(GL_TEXTURE_2D, textureid); - // this reads from the sdl surface and puts it into an opengl texture - glTexImage2D(GL_TEXTURE_2D, 0, mode, surface->w, surface->h, 0, mode, GL_UNSIGNED_BYTE, surface->pixels); - // these affect how this texture is drawn later on...glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - // clean up - SDL_FreeSurface(surface); - return textureid; - -} - -GLuint LoadShaders(const char * vertex_file_path,const char * fragment_file_path){ - - // Create the shaders - GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER); - GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); - - // Read the Vertex Shader code from the file - std::string VertexShaderCode; - std::ifstream VertexShaderStream(vertex_file_path, std::ios::in); - if(VertexShaderStream.is_open()){ - std::string Line = ""; - while(getline(VertexShaderStream, Line)) - VertexShaderCode += "\n" + Line; - VertexShaderStream.close(); - }else{ - printf("Impossible to open %s. Are you in the right directory ? Don't forget to read the FAQ !\n", vertex_file_path); - getchar(); - return 0; - } - - // Read the Fragment Shader code from the file - std::string FragmentShaderCode; - std::ifstream FragmentShaderStream(fragment_file_path, std::ios::in); - if(FragmentShaderStream.is_open()){ - std::string Line = ""; - while(getline(FragmentShaderStream, Line)) - FragmentShaderCode += "\n" + Line; - FragmentShaderStream.close(); - } - - GLint Result = GL_FALSE; - int InfoLogLength; - - - // Compile Vertex Shader - printf("Compiling shader : %s\n", vertex_file_path); - char const * VertexSourcePointer = VertexShaderCode.c_str(); - glShaderSource(VertexShaderID, 1, &VertexSourcePointer , NULL); - glCompileShader(VertexShaderID); - - // Check Vertex Shader - glGetShaderiv(VertexShaderID, GL_COMPILE_STATUS, &Result); - glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); - if ( InfoLogLength > 0 ){ - std::vector VertexShaderErrorMessage(InfoLogLength+1); - glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); - printf("%s\n", &VertexShaderErrorMessage[0]); - } - - - - // Compile Fragment Shader - printf("Compiling shader : %s\n", fragment_file_path); - char const * FragmentSourcePointer = FragmentShaderCode.c_str(); - glShaderSource(FragmentShaderID, 1, &FragmentSourcePointer , NULL); - glCompileShader(FragmentShaderID); - - // Check Fragment Shader - glGetShaderiv(FragmentShaderID, GL_COMPILE_STATUS, &Result); - glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); - if ( InfoLogLength > 0 ){ - std::vector FragmentShaderErrorMessage(InfoLogLength+1); - glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]); - printf("%s\n", &FragmentShaderErrorMessage[0]); - } - - - - // Link the program - printf("Linking program\n"); - GLuint ProgramID = glCreateProgram(); - glAttachShader(ProgramID, VertexShaderID); - glAttachShader(ProgramID, FragmentShaderID); - glLinkProgram(ProgramID); - - // Check the program - glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result); - glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength); - if ( InfoLogLength > 0 ){ - std::vector ProgramErrorMessage(InfoLogLength+1); - glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]); - printf("%s\n", &ProgramErrorMessage[0]); - } - - - glDetachShader(ProgramID, VertexShaderID); - glDetachShader(ProgramID, FragmentShaderID); - - glDeleteShader(VertexShaderID); - glDeleteShader(FragmentShaderID); - - return ProgramID; -} - - +#include "loaders.h" int main(int argc, char* args[]) { GLFWwindow* window; @@ -179,16 +37,16 @@ int main(int argc, char* args[]) { GLenum error = glGetError(); if (error != GL_NO_ERROR) { - std::cout << "OpenGL Error: " << error << std::endl; + printf("OpenGL Error: %d",error); } GLenum glewinit = glewInit(); if (glewinit != GLEW_OK) { - std::cout << "Glew not okay! " << glewinit; + printf("Glew not okay! %d",glewinit); return 1; } /* SDL */ - if (SDL_Init(SDL_INIT_VIDEO) < 0) { + if (InitLoaders() < 0) { printf("SDL Error"); return 1; } diff --git a/opengl-test-two/opengl-test-two.cbp b/opengl-test-two/opengl-test-two.cbp index 10a334b..9c101ae 100644 --- a/opengl-test-two/opengl-test-two.cbp +++ b/opengl-test-two/opengl-test-two.cbp @@ -13,6 +13,7 @@