gpu base started
This commit is contained in:
parent
45636e5662
commit
1d51b3bed9
24
source/hyporo/gpu/context.cpp
Normal file
24
source/hyporo/gpu/context.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
#include "context.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace hpr::gpu
|
||||||
|
{
|
||||||
|
|
||||||
|
Context::Context() :
|
||||||
|
p_api {DeviceAPI::Unknown}
|
||||||
|
{}
|
||||||
|
|
||||||
|
Context::Context(DeviceAPI api) :
|
||||||
|
p_api {api}
|
||||||
|
{}
|
||||||
|
|
||||||
|
Context::~Context()
|
||||||
|
{}
|
||||||
|
|
||||||
|
bool Context::checkCompability(const Context* ctx) const
|
||||||
|
{
|
||||||
|
return (ctx != nullptr) ? ctx->p_api == p_api : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
38
source/hyporo/gpu/context.hpp
Normal file
38
source/hyporo/gpu/context.hpp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
namespace hpr::gpu
|
||||||
|
{
|
||||||
|
|
||||||
|
class Context
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum class DeviceAPI
|
||||||
|
{
|
||||||
|
Unknown,
|
||||||
|
OpenGL,
|
||||||
|
DeviceAPICount
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
DeviceAPI p_api;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
Context();
|
||||||
|
|
||||||
|
Context(DeviceAPI api);
|
||||||
|
|
||||||
|
virtual ~Context();
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
bool checkCompability(const Context* ctx) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
23
source/hyporo/gpu/shader.cpp
Normal file
23
source/hyporo/gpu/shader.cpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
#include "shader.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace hpr::gpu
|
||||||
|
{
|
||||||
|
|
||||||
|
Shader::Shader() :
|
||||||
|
Context {DeviceAPI::Unknown},
|
||||||
|
p_filename {},
|
||||||
|
p_label {}
|
||||||
|
{}
|
||||||
|
|
||||||
|
Shader::Shader(DeviceAPI api) :
|
||||||
|
Context {api},
|
||||||
|
p_filename {},
|
||||||
|
p_label {}
|
||||||
|
{}
|
||||||
|
|
||||||
|
Shader::~Shader()
|
||||||
|
{}
|
||||||
|
|
||||||
|
}
|
45
source/hyporo/gpu/shader.hpp
Normal file
45
source/hyporo/gpu/shader.hpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "context.hpp"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
namespace hpr::gpu
|
||||||
|
{
|
||||||
|
|
||||||
|
class Shader : public Context
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
std::string p_filename;
|
||||||
|
std::string p_label;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
enum class ShaderType
|
||||||
|
{
|
||||||
|
Vertex,
|
||||||
|
Geometry,
|
||||||
|
Fragment,
|
||||||
|
ShaderTypeCount
|
||||||
|
};
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
Shader();
|
||||||
|
|
||||||
|
Shader(DeviceAPI api);
|
||||||
|
|
||||||
|
virtual ~Shader();
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
const std::string filename() const;
|
||||||
|
|
||||||
|
const std::string label() const;
|
||||||
|
|
||||||
|
const ShaderType shaderType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // end namespace hpr::gpu
|
21
source/hyporo/gpu/shader_program.cpp
Normal file
21
source/hyporo/gpu/shader_program.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
#include "shader_program.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace hpr::gpu
|
||||||
|
{
|
||||||
|
|
||||||
|
ShaderProgram::ShaderProgram() :
|
||||||
|
Context {DeviceAPI::Unknown},
|
||||||
|
p_isLinked {false}
|
||||||
|
{}
|
||||||
|
|
||||||
|
ShaderProgram::ShaderProgram(DeviceAPI api) :
|
||||||
|
Context {api},
|
||||||
|
p_isLinked {false}
|
||||||
|
{}
|
||||||
|
|
||||||
|
ShaderProgram::~ShaderProgram()
|
||||||
|
{}
|
||||||
|
|
||||||
|
}
|
35
source/hyporo/gpu/shader_program.hpp
Normal file
35
source/hyporo/gpu/shader_program.hpp
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "context.hpp"
|
||||||
|
#include "shader.hpp"
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
|
||||||
|
namespace hpr::gpu
|
||||||
|
{
|
||||||
|
|
||||||
|
class ShaderProgram : Context
|
||||||
|
{
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
std::array<Shader*, (size_t)Shader::ShaderType::ShaderTypeCount> p_slots;
|
||||||
|
bool p_isLinked;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
ShaderProgram();
|
||||||
|
|
||||||
|
ShaderProgram(DeviceAPI api);
|
||||||
|
|
||||||
|
virtual ~ShaderProgram();
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
const Shader* getShader(Shader::ShaderType type) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user