xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
shader.hpp
浏览该文件的文档.
1#pragma once
2#include <xcal/public.h>
3
7 friend class Object;
9
10 private:
11 gl::GLuint shader_ = 0;
12 gl::GLenum type_;
13
14 private:
15 Shader(const Shader &) = delete;
16 Shader(Shader &&o) { _STD swap(shader_, o.shader_); }
17 Shader &operator=(const Shader &) = delete;
18 Shader &operator=(Shader &&o) {
19 _STD swap(shader_, o.shader_);
20 return *this;
21 }
22
23 public:
24 Shader(gl::GLenum type) : type_(type) {};
25 Shader(gl::GLenum type, gl::GLuint shader)
26 : type_{type}, shader_(shader) {};
27 ~Shader() { destroy(); };
28
29 public:
30 bool is_valid() const { return shader_ != 0; };
31
32 public:
33 void swap(Shader &o) { _STD swap(shader_, o.shader_); }
34 void destroy();
35
36 public:
37 static Shader from_source(gl::GLenum type, std::string_view source);
38 static Shader from_file(gl::GLenum type, std::string_view file_path);
39};
40
41} // namespace xcal::render::opengl::GL
Shader(gl::GLenum type, gl::GLuint shader)
Definition shader.hpp:25
unsigned int GLuint
Definition typedef.hpp:21
#define _STD
Definition public.h:32
#define XCAL_API
Definition public.h:69