mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-29 16:21:29 +00:00
LibGL: Add Shader and Program class stubs
This commit is contained in:
parent
cd7d2c3446
commit
b975569a40
Notes:
sideshowbarker
2024-07-19 01:59:31 +09:00
Author: https://github.com/sunverwerth Commit: https://github.com/SerenityOS/serenity/commit/b975569a40 Pull-request: https://github.com/SerenityOS/serenity/pull/16225 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/gmta ✅ Reviewed-by: https://github.com/supercomputer7
|
@ -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
|
||||
|
|
28
Userland/Libraries/LibGL/Shaders/Program.cpp
Normal file
28
Userland/Libraries/LibGL/Shaders/Program.cpp
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibGL/Shaders/Program.h>
|
||||
|
||||
namespace GL {
|
||||
|
||||
NonnullRefPtr<Program> Program::create()
|
||||
{
|
||||
return adopt_ref(*new Program());
|
||||
}
|
||||
|
||||
ErrorOr<void> Program::attach_shader(Shader&)
|
||||
{
|
||||
TODO();
|
||||
return {};
|
||||
}
|
||||
|
||||
ErrorOr<void> Program::link()
|
||||
{
|
||||
TODO();
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
28
Userland/Libraries/LibGL/Shaders/Program.h
Normal file
28
Userland/Libraries/LibGL/Shaders/Program.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/NonnullRefPtr.h>
|
||||
#include <AK/RefCounted.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <LibGL/Shaders/Shader.h>
|
||||
|
||||
namespace GL {
|
||||
|
||||
class Program final : public RefCounted<Program> {
|
||||
public:
|
||||
static NonnullRefPtr<Program> create();
|
||||
|
||||
ErrorOr<void> attach_shader(Shader&);
|
||||
ErrorOr<void> link();
|
||||
|
||||
private:
|
||||
Vector<NonnullRefPtr<Shader>> m_vertex_shaders;
|
||||
Vector<NonnullRefPtr<Shader>> m_fragment_shaders;
|
||||
};
|
||||
|
||||
}
|
30
Userland/Libraries/LibGL/Shaders/Shader.cpp
Normal file
30
Userland/Libraries/LibGL/Shaders/Shader.cpp
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <AK/String.h>
|
||||
#include <LibGL/Shaders/Shader.h>
|
||||
|
||||
namespace GL {
|
||||
|
||||
NonnullRefPtr<Shader> Shader::create(GLenum shader_type)
|
||||
{
|
||||
return adopt_ref(*new Shader(shader_type));
|
||||
}
|
||||
|
||||
ErrorOr<void> 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<void> Shader::compile()
|
||||
{
|
||||
TODO();
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
38
Userland/Libraries/LibGL/Shaders/Shader.h
Normal file
38
Userland/Libraries/LibGL/Shaders/Shader.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/Error.h>
|
||||
#include <AK/RefCounted.h>
|
||||
#include <AK/RefPtr.h>
|
||||
#include <AK/String.h>
|
||||
#include <AK/StringView.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <LibGL/GL/glplatform.h>
|
||||
|
||||
namespace GL {
|
||||
|
||||
class Shader final : public RefCounted<Shader> {
|
||||
public:
|
||||
static NonnullRefPtr<Shader> create(GLenum shader_type);
|
||||
|
||||
void clear_sources() { m_sources.clear(); }
|
||||
ErrorOr<void> add_source(StringView source_code);
|
||||
ErrorOr<void> compile();
|
||||
GLenum type() const { return m_type; }
|
||||
|
||||
private:
|
||||
explicit Shader(GLenum shader_type)
|
||||
: m_type { shader_type }
|
||||
{
|
||||
}
|
||||
|
||||
Vector<String> m_sources;
|
||||
GLenum m_type;
|
||||
};
|
||||
|
||||
}
|
Loading…
Reference in a new issue