LibGL: Add Shader and Program class stubs

This commit is contained in:
Stephan Unverwerth 2022-08-28 10:36:31 +02:00 committed by Andrew Kaster
parent cd7d2c3446
commit b975569a40
Notes: sideshowbarker 2024-07-19 01:59:31 +09:00
5 changed files with 126 additions and 0 deletions

View file

@ -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

View 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 {};
}
}

View 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;
};
}

View 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 {};
}
}

View 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;
};
}