External shader file loading.

This commit is contained in:
sigonasr2 2023-10-25 19:14:36 -05:00
parent 3a2d18f731
commit 3f8fd07eb3
6 changed files with 63 additions and 12 deletions

View File

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

View File

@ -23,5 +23,16 @@
<ClInclude Include="ShaderError.h"> <ClInclude Include="ShaderError.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </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> </ItemGroup>
</Project> </Project>

View File

@ -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
);
}

View File

@ -1,6 +1,7 @@
#include <GL/glew.h> #include <GL/glew.h>
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#include <iostream> #include <iostream>
#include "utils.h"
#include "ShaderError.h" #include "ShaderError.h"
#define numVAOs 1 #define numVAOs 1
@ -14,21 +15,17 @@ GLuint createShaderProgram(){
GLint linked; GLint linked;
// catch errors while compiling shaders // 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 vShader=glCreateShader(GL_VERTEX_SHADER);
GLuint fShader=glCreateShader(GL_FRAGMENT_SHADER); GLuint fShader=glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(vShader,1,&vShaderSource,NULL); std::string vertShaderStr=utils::readShaderSource("vertShader.glsl");
glShaderSource(fShader,1,&fShaderSource,NULL); 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); glCompileShader(vShader);
ErrorCheck::checkOpenGLError(); ErrorCheck::checkOpenGLError();

22
OpenGLTemplate/utils.h Normal file
View File

@ -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;
}
}

View File

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