Working on basic rendering #4
* Added a basic material abstraction * Started implementation of RenderTarget (such as render textures)
This commit is contained in:
		
							
								
								
									
										19
									
								
								BarinkEngine/Include/Graphics/Material.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								BarinkEngine/Include/Graphics/Material.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
#include <glm/glm.hpp>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include "Shader.h"
 | 
			
		||||
 | 
			
		||||
class Material {
 | 
			
		||||
public:
 | 
			
		||||
	Material(const Shader& shader);
 | 
			
		||||
	
 | 
			
		||||
	void Apply();
 | 
			
		||||
	
 | 
			
		||||
	glm::vec3 Color;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	const Shader& shader;
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										30
									
								
								BarinkEngine/Include/Graphics/RenderSurface.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								BarinkEngine/Include/Graphics/RenderSurface.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "BarinkEngine.h"
 | 
			
		||||
#include <vector>;
 | 
			
		||||
class RenderSurface 
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	RenderSurface();
 | 
			
		||||
	~RenderSurface();
 | 
			
		||||
 | 
			
		||||
	void Draw();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	// would normally be a material
 | 
			
		||||
	// however rendersurface is special and
 | 
			
		||||
	// thus does not contain a material
 | 
			
		||||
	Shader* shader;
 | 
			
		||||
 | 
			
		||||
	// Basically a mesh
 | 
			
		||||
	std::vector<glm::vec3> verts;
 | 
			
		||||
	std::vector<unsigned int > indices;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Buffer vertexBuffer;
 | 
			
		||||
	Buffer elementBuffer;
 | 
			
		||||
 | 
			
		||||
	VertexArray VAO;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
@ -1,21 +1,33 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include "Mesh.h"
 | 
			
		||||
#include "Buffer.h"
 | 
			
		||||
#include "VertexArray.h"
 | 
			
		||||
#include "Scene.h"
 | 
			
		||||
 | 
			
		||||
class Renderable  : public SceneNode {
 | 
			
		||||
public:
 | 
			
		||||
	Buffer vertexBuffer;
 | 
			
		||||
	Buffer elementBuffer;
 | 
			
		||||
	VertexArray VAO;
 | 
			
		||||
	~Renderable();
 | 
			
		||||
 | 
			
		||||
	static Renderable* Load();
 | 
			
		||||
	void Draw();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	std::vector<BarinkEngine::Mesh> meshes;
 | 
			
		||||
	Renderable();
 | 
			
		||||
#pragma once
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include "Mesh.h"
 | 
			
		||||
#include "Buffer.h"
 | 
			
		||||
#include "Material.h"
 | 
			
		||||
#include "VertexArray.h"
 | 
			
		||||
#include "Scene.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Renderable  : public SceneNode {
 | 
			
		||||
public:
 | 
			
		||||
	/*
 | 
			
		||||
	* NOTE: Should combine into a Mesh!!
 | 
			
		||||
	*/
 | 
			
		||||
	Buffer vertexBuffer;
 | 
			
		||||
	Buffer elementBuffer;
 | 
			
		||||
	VertexArray VAO;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Material* material;
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	Shader* shader;
 | 
			
		||||
 | 
			
		||||
	~Renderable();
 | 
			
		||||
 | 
			
		||||
	static Renderable* Load();
 | 
			
		||||
	void Draw();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	std::vector<BarinkEngine::Mesh> meshes;
 | 
			
		||||
	Renderable();
 | 
			
		||||
};
 | 
			
		||||
@ -15,12 +15,12 @@ class Shader {
 | 
			
		||||
    public:
 | 
			
		||||
        Shader(const std::string vertexShaderPath, const std::string fragmentShaderPath);
 | 
			
		||||
        void Use();
 | 
			
		||||
        void setUniformMat4(std::string uniformName, glm::mat4 matrix4);
 | 
			
		||||
        void setUniformVec4(std::string uniformName, glm::vec4 vector4);
 | 
			
		||||
        void setUniformVec3(std::string uniformName, glm::vec3 vector3);
 | 
			
		||||
        void setUniformVec2(std::string uniformName, glm::vec2 vector2);
 | 
			
		||||
        void setUniformFloat(std::string uniformName, float value);
 | 
			
		||||
        void setUniformInt(std::string uniformName, int value);
 | 
			
		||||
        void setUniformMat4(std::string uniformName, glm::mat4 matrix4)const;
 | 
			
		||||
        void setUniformVec4(std::string uniformName, glm::vec4 vector4)const;
 | 
			
		||||
        void setUniformVec3(std::string uniformName, glm::vec3 vector3)const;
 | 
			
		||||
        void setUniformVec2(std::string uniformName, glm::vec2 vector2)const;
 | 
			
		||||
        void setUniformFloat(std::string uniformName, float value)const;
 | 
			
		||||
        void setUniformInt(std::string uniformName, int value) const ;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
		Reference in New Issue
	
	Block a user