mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-10 13:00:29 +03:00
ad3d5d43bd
This introduces a new library, LibSoftGPU, that incorporates all rendering related features that formerly resided within LibGL itself. Going forward we will make both libraries completely independent from each other allowing LibGL to load different, possibly accelerated, rendering backends.
45 lines
966 B
C++
45 lines
966 B
C++
/*
|
|
* Copyright (c) 2021, Stephan Unverwerth <s.unverwerth@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibSoftGPU/DepthBuffer.h>
|
|
|
|
namespace SoftGPU {
|
|
|
|
DepthBuffer::DepthBuffer(Gfx::IntSize const& size)
|
|
: m_size(size)
|
|
, m_data(new float[size.width() * size.height()])
|
|
{
|
|
}
|
|
|
|
DepthBuffer::~DepthBuffer()
|
|
{
|
|
delete[] m_data;
|
|
}
|
|
|
|
float* DepthBuffer::scanline(int y)
|
|
{
|
|
VERIFY(y >= 0 && y < m_size.height());
|
|
return &m_data[y * m_size.width()];
|
|
}
|
|
|
|
void DepthBuffer::clear(float depth)
|
|
{
|
|
int num_entries = m_size.width() * m_size.height();
|
|
for (int i = 0; i < num_entries; ++i) {
|
|
m_data[i] = depth;
|
|
}
|
|
}
|
|
|
|
void DepthBuffer::clear(Gfx::IntRect bounds, float depth)
|
|
{
|
|
bounds.intersect({ 0, 0, m_size.width(), m_size.height() });
|
|
for (int y = bounds.top(); y <= bounds.bottom(); ++y)
|
|
for (int x = bounds.left(); x <= bounds.right(); ++x)
|
|
m_data[y * m_size.width() + x] = depth;
|
|
}
|
|
|
|
}
|