External shader file loading.

master
sigonasr2 1 year ago
parent 3a2d18f731
commit 3f8fd07eb3
  1. 5
      OpenGLTemplate/OpenGLTemplate.vcxproj
  2. 11
      OpenGLTemplate/OpenGLTemplate.vcxproj.filters
  3. 11
      OpenGLTemplate/fragShader.glsl
  4. 21
      OpenGLTemplate/main.cpp
  5. 22
      OpenGLTemplate/utils.h
  6. 5
      OpenGLTemplate/vertShader.glsl

@ -143,6 +143,11 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="ShaderError.h" />
<ClInclude Include="utils.h" />
</ItemGroup>
<ItemGroup>
<None Include="fragShader.glsl" />
<None Include="vertShader.glsl" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

@ -23,5 +23,16 @@
<ClInclude Include="ShaderError.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="utils.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="vertShader.glsl">
<Filter>Resource Files</Filter>
</None>
<None Include="fragShader.glsl">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
</Project>

@ -0,0 +1,11 @@
#version 430
out vec4 color;
void main(void)
{
color=vec4(
(gl_FragCoord.x - 300) / 5.f,
0.0,
5 - (gl_FragCoord.x - 300) / 5.f,
1.0
);
}

@ -1,6 +1,7 @@
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
#include "utils.h"
#include "ShaderError.h"
#define numVAOs 1
@ -14,21 +15,17 @@ GLuint createShaderProgram(){
GLint linked;
// catch errors while compiling shaders
const char*vShaderSource=
"#version 430 \n"
"void main(void) \n"
"{gl_Position=vec4(0.0,0.0,0.0,1.0);}";
const char*fShaderSource=
"#version 430 \n"
"out vec4 color; \n"
"void main(void) \n"
"{ color=vec4((gl_FragCoord.x-300)/5.f,0.0,5-(gl_FragCoord.x-300)/5.f,1.0); }";
GLuint vShader=glCreateShader(GL_VERTEX_SHADER);
GLuint fShader=glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(vShader,1,&vShaderSource,NULL);
glShaderSource(fShader,1,&fShaderSource,NULL);
std::string vertShaderStr=utils::readShaderSource("vertShader.glsl");
std::string fragShaderStr=utils::readShaderSource("fragShader.glsl");
const char*vertShaderSrc=vertShaderStr.c_str();
const char*fragShaderSrc=fragShaderStr.c_str();
glShaderSource(vShader,1,&vertShaderSrc,NULL);
glShaderSource(fShader,1,&fragShaderSrc,NULL);
glCompileShader(vShader);
ErrorCheck::checkOpenGLError();

@ -0,0 +1,22 @@
#pragma once
#include <string>
#include <fstream>
#include <GL/glew.h>
namespace utils{
inline std::string readShaderSource(const char *filePath){
std::string content;
std::ifstream fileStream(filePath, std::ios::in);
std::string line = "";
if(fileStream.fail()){
std::cout<<"Could not open shader "<<filePath<<"!"<<std::endl;
throw;
}
while (fileStream.good()) {
getline(fileStream, line);
content.append(line + "\n");
}
fileStream.close();
return content;
}
}

@ -0,0 +1,5 @@
#version 430
void main(void)
{
gl_Position=vec4(0.0,0.0,0.0,1.0);
}
Loading…
Cancel
Save