From b975569a4009ebb089cd9edc262164177d358a54 Mon Sep 17 00:00:00 2001 From: Stephan Unverwerth Date: Sun, 28 Aug 2022 10:36:31 +0200 Subject: [PATCH] LibGL: Add Shader and Program class stubs --- Userland/Libraries/LibGL/CMakeLists.txt | 2 ++ Userland/Libraries/LibGL/Shaders/Program.cpp | 28 +++++++++++++++ Userland/Libraries/LibGL/Shaders/Program.h | 28 +++++++++++++++ Userland/Libraries/LibGL/Shaders/Shader.cpp | 30 ++++++++++++++++ Userland/Libraries/LibGL/Shaders/Shader.h | 38 ++++++++++++++++++++ 5 files changed, 126 insertions(+) create mode 100644 Userland/Libraries/LibGL/Shaders/Program.cpp create mode 100644 Userland/Libraries/LibGL/Shaders/Program.h create mode 100644 Userland/Libraries/LibGL/Shaders/Shader.cpp create mode 100644 Userland/Libraries/LibGL/Shaders/Shader.h diff --git a/Userland/Libraries/LibGL/CMakeLists.txt b/Userland/Libraries/LibGL/CMakeLists.txt index 1b53acb7cb..7b29573dee 100644 --- a/Userland/Libraries/LibGL/CMakeLists.txt +++ b/Userland/Libraries/LibGL/CMakeLists.txt @@ -11,6 +11,8 @@ set(SOURCES Matrix.cpp NameAllocator.cpp Shader.cpp + Shaders/Program.cpp + Shaders/Shader.cpp Stencil.cpp Tex/Texture2D.cpp Texture.cpp diff --git a/Userland/Libraries/LibGL/Shaders/Program.cpp b/Userland/Libraries/LibGL/Shaders/Program.cpp new file mode 100644 index 0000000000..e432b24680 --- /dev/null +++ b/Userland/Libraries/LibGL/Shaders/Program.cpp @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022, Stephan Unverwerth + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +namespace GL { + +NonnullRefPtr Program::create() +{ + return adopt_ref(*new Program()); +} + +ErrorOr Program::attach_shader(Shader&) +{ + TODO(); + return {}; +} + +ErrorOr Program::link() +{ + TODO(); + return {}; +} + +} diff --git a/Userland/Libraries/LibGL/Shaders/Program.h b/Userland/Libraries/LibGL/Shaders/Program.h new file mode 100644 index 0000000000..3e619c3b2f --- /dev/null +++ b/Userland/Libraries/LibGL/Shaders/Program.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022, Stephan Unverwerth + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include +#include +#include + +namespace GL { + +class Program final : public RefCounted { +public: + static NonnullRefPtr create(); + + ErrorOr attach_shader(Shader&); + ErrorOr link(); + +private: + Vector> m_vertex_shaders; + Vector> m_fragment_shaders; +}; + +} diff --git a/Userland/Libraries/LibGL/Shaders/Shader.cpp b/Userland/Libraries/LibGL/Shaders/Shader.cpp new file mode 100644 index 0000000000..007a4fc76a --- /dev/null +++ b/Userland/Libraries/LibGL/Shaders/Shader.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2022, Stephan Unverwerth + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +namespace GL { + +NonnullRefPtr Shader::create(GLenum shader_type) +{ + return adopt_ref(*new Shader(shader_type)); +} + +ErrorOr Shader::add_source(StringView source_code) +{ + auto source_code_content = TRY(String::from_utf8(source_code)); + TRY(m_sources.try_append(move(source_code_content))); + return {}; +} + +ErrorOr Shader::compile() +{ + TODO(); + return {}; +} + +} diff --git a/Userland/Libraries/LibGL/Shaders/Shader.h b/Userland/Libraries/LibGL/Shaders/Shader.h new file mode 100644 index 0000000000..c4a1a7d70f --- /dev/null +++ b/Userland/Libraries/LibGL/Shaders/Shader.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022, Stephan Unverwerth + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +namespace GL { + +class Shader final : public RefCounted { +public: + static NonnullRefPtr create(GLenum shader_type); + + void clear_sources() { m_sources.clear(); } + ErrorOr add_source(StringView source_code); + ErrorOr compile(); + GLenum type() const { return m_type; } + +private: + explicit Shader(GLenum shader_type) + : m_type { shader_type } + { + } + + Vector m_sources; + GLenum m_type; +}; + +}