[Refactor] More spring cleaning for the renderer.
This commit is contained in:
		
							parent
							
								
									e8ca1630c6
								
							
						
					
					
						commit
						5cbcfeb54e
					
				@ -1,41 +1,41 @@
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
#include <cstring>
 | 
			
		||||
#include <fstream>
 | 
			
		||||
#include <sstream>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include <GL/glew.h>
 | 
			
		||||
#include "shader.h"
 | 
			
		||||
 | 
			
		||||
/* Read whole file. */
 | 
			
		||||
char* read_file(const char* path) {
 | 
			
		||||
  FILE* file = fopen(path, "rb");
 | 
			
		||||
  if(!file) {
 | 
			
		||||
std::string read_file(const char* path) {
 | 
			
		||||
  std::ifstream file(path);
 | 
			
		||||
  if(!file.is_open()) {
 | 
			
		||||
    printf("Failed to open file: %s\n", path);
 | 
			
		||||
    return NULL;
 | 
			
		||||
    return "";
 | 
			
		||||
  }
 | 
			
		||||
  fseek(file, 0, SEEK_END);
 | 
			
		||||
  long len = ftell(file);
 | 
			
		||||
  fseek(file, 0, SEEK_SET);
 | 
			
		||||
  char* buffer = (char*)malloc(len+1);
 | 
			
		||||
  fread(buffer, 1, len, file);
 | 
			
		||||
  fclose(file);
 | 
			
		||||
  buffer[len] = '\0';
 | 
			
		||||
  return buffer;
 | 
			
		||||
 | 
			
		||||
  std::stringstream buffer;
 | 
			
		||||
  buffer << file.rdbuf();
 | 
			
		||||
  return buffer.str();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Shader::Shader(const char* vert_path, const char* frag_path) {
 | 
			
		||||
  char* vert_source = read_file(vert_path);
 | 
			
		||||
  char* frag_source = read_file(frag_path);
 | 
			
		||||
  if(!vert_source || !frag_source) {
 | 
			
		||||
    printf("Failed to read shader files.\n");
 | 
			
		||||
  std::string vert_string = read_file(vert_path);
 | 
			
		||||
  std::string frag_string = read_file(frag_path);
 | 
			
		||||
  if(vert_string.empty() || frag_string.empty()) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const char* vert_source = vert_string.c_str();
 | 
			
		||||
  const char* frag_source = frag_string.c_str();
 | 
			
		||||
 | 
			
		||||
  unsigned int vert, frag;
 | 
			
		||||
  vert = glCreateShader(GL_VERTEX_SHADER);
 | 
			
		||||
  glShaderSource(vert, 1, &vert_source, NULL);
 | 
			
		||||
  glCompileShader(vert);
 | 
			
		||||
  _check_compile_errors(vert, "VERTEX");
 | 
			
		||||
 | 
			
		||||
  frag  = glCreateShader(GL_FRAGMENT_SHADER);
 | 
			
		||||
  frag = glCreateShader(GL_FRAGMENT_SHADER);
 | 
			
		||||
  glShaderSource(frag, 1, &frag_source, NULL);
 | 
			
		||||
  glCompileShader(frag);
 | 
			
		||||
  _check_compile_errors(frag, "FRAGMENT");
 | 
			
		||||
@ -48,8 +48,6 @@ Shader::Shader(const char* vert_path, const char* frag_path) {
 | 
			
		||||
 | 
			
		||||
  glDeleteShader(vert);
 | 
			
		||||
  glDeleteShader(frag);
 | 
			
		||||
  free(vert_source);
 | 
			
		||||
  free(frag_source);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Shader::use(void) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user