PeriDyno 1.0.0
Loading...
Searching...
No Matches
Shader.h
Go to the documentation of this file.
1
16
17#pragma once
18
19#include "GraphicsObject.h"
20#include <string>
21#include "Vector.h"
22#include <glm/glm.hpp>
23
24
25namespace dyno {
26
27 // OpenGL shader
28 class Shader : public GraphicsObject
29 {
31 public:
32 bool createFromFile(unsigned int type, const std::string& path);
33 bool createFromSource(unsigned int type, const std::string& src);
34 bool createFromSPIRV(unsigned int type, const void* spirv, const size_t len);
35 void release();
36
37 protected:
38 void create() {};
39 };
40
41 // OpenGL shader program
42 class Program : public GraphicsObject
43 {
45 public:
46 void create();
47 void release();
48
49 void attachShader(const Shader& shader);
50 bool link();
51
52 void use();
53
54 //
55 void setFloat(const char* name, float v);
56 void setInt(const char* name, int v);
57
58 void setVec4(const char* name, dyno::Vec4f v);
59 void setVec3(const char* name, dyno::Vec3f v);
60 void setVec2(const char* name, dyno::Vec2f v);
61
62 public:
63 static Program* createProgram(const char* vs, const char* fs, const char* gs = 0);
64
66 const void* vs, size_t vs_len,
67 const void* fs, size_t fs_len,
68 const void* gs = 0, size_t gs_len = 0);
69 };
70
71}
#define GL_OBJECT(T)
GraphicsObject()=default
void setFloat(const char *name, float v)
Definition Shader.cpp:126
static Program * createProgramSPIRV(const void *vs, size_t vs_len, const void *fs, size_t fs_len, const void *gs=0, size_t gs_len=0)
Definition Shader.cpp:202
void create()
Definition Shader.cpp:87
void setVec2(const char *name, dyno::Vec2f v)
Definition Shader.cpp:138
static Program * createProgram(const char *vs, const char *fs, const char *gs=0)
Definition Shader.cpp:157
void release()
Definition Shader.cpp:92
void setInt(const char *name, int v)
Definition Shader.cpp:132
void setVec4(const char *name, dyno::Vec4f v)
Definition Shader.cpp:150
void setVec3(const char *name, dyno::Vec3f v)
Definition Shader.cpp:144
bool link()
Definition Shader.cpp:105
void attachShader(const Shader &shader)
Definition Shader.cpp:100
bool createFromSPIRV(unsigned int type, const void *spirv, const size_t len)
Definition Shader.cpp:35
void release()
Definition Shader.cpp:75
bool createFromFile(unsigned int type, const std::string &path)
Definition Shader.cpp:60
void create()
Definition Shader.h:38
bool createFromSource(unsigned int type, const std::string &src)
Definition Shader.cpp:8
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Vector< float, 2 > Vec2f
Definition Vector2D.h:81
Vector< float, 4 > Vec4f
Definition Vector4D.h:86
Vector< float, 3 > Vec3f
Definition Vector3D.h:93