mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 04:27:44 +00:00
LibGL: Add Shader and Program class stubs
This commit is contained in:
parent
cd7d2c3446
commit
b975569a40
5 changed files with 126 additions and 0 deletions
|
@ -11,6 +11,8 @@ set(SOURCES
|
||||||
Matrix.cpp
|
Matrix.cpp
|
||||||
NameAllocator.cpp
|
NameAllocator.cpp
|
||||||
Shader.cpp
|
Shader.cpp
|
||||||
|
Shaders/Program.cpp
|
||||||
|
Shaders/Shader.cpp
|
||||||
Stencil.cpp
|
Stencil.cpp
|
||||||
Tex/Texture2D.cpp
|
Tex/Texture2D.cpp
|
||||||
Texture.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…
Add table
Add a link
Reference in a new issue