[glutils,nostalgia] Ptr to ref changes
This commit is contained in:
parent
7e19f45c69
commit
db91ea6a63
@ -129,8 +129,9 @@ FrameBuffer generateFrameBuffer(int width, int height) noexcept {
|
|||||||
glGenTextures(1, &fb.color.id);
|
glGenTextures(1, &fb.color.id);
|
||||||
glBindTexture(GL_TEXTURE_2D, fb.color);
|
glBindTexture(GL_TEXTURE_2D, fb.color);
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glGenerateMipmap(GL_TEXTURE_2D);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fb.color, 0);
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fb.color, 0);
|
||||||
// depth texture
|
// depth texture
|
||||||
glGenRenderbuffers(1, &fb.depth.id);
|
glGenRenderbuffers(1, &fb.depth.id);
|
||||||
@ -146,21 +147,24 @@ FrameBuffer generateFrameBuffer(int width, int height) noexcept {
|
|||||||
return fb;
|
return fb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void resizeInitFrameBuffer(FrameBuffer *fb, int width, int height) noexcept {
|
void resizeInitFrameBuffer(FrameBuffer &fb, int width, int height) noexcept {
|
||||||
if (!*fb) {
|
if (!fb) {
|
||||||
*fb = generateFrameBuffer(width, height);
|
fb = generateFrameBuffer(width, height);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
width = ox::max(1, width);
|
width = ox::max(1, width);
|
||||||
height = ox::max(1, height);
|
height = ox::max(1, height);
|
||||||
fb->width = width;
|
fb.width = width;
|
||||||
fb->height = height;
|
fb.height = height;
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, *fb);
|
glBindFramebuffer(GL_FRAMEBUFFER, fb);
|
||||||
// color texture
|
// color texture
|
||||||
glBindTexture(GL_TEXTURE_2D, fb->color);
|
glBindTexture(GL_TEXTURE_2D, fb.color);
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
|
||||||
|
glGenerateMipmap(GL_TEXTURE_2D);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||||
// depth texture
|
// depth texture
|
||||||
glBindRenderbuffer(GL_RENDERBUFFER, fb->depth);
|
glBindRenderbuffer(GL_RENDERBUFFER, fb.depth);
|
||||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height);
|
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height);
|
||||||
// restore primary FB
|
// restore primary FB
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||||
@ -168,13 +172,13 @@ void resizeInitFrameBuffer(FrameBuffer *fb, int width, int height) noexcept {
|
|||||||
glBindRenderbuffer(GL_RENDERBUFFER, 0);
|
glBindRenderbuffer(GL_RENDERBUFFER, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sendVbo(const BufferSet &bs) noexcept {
|
void sendVbo(BufferSet const&bs) noexcept {
|
||||||
const auto bufferSize = static_cast<GLsizeiptr>(sizeof(decltype(bs.vertices)::value_type) * bs.vertices.size());
|
const auto bufferSize = static_cast<GLsizeiptr>(sizeof(decltype(bs.vertices)::value_type) * bs.vertices.size());
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, bs.vbo);
|
glBindBuffer(GL_ARRAY_BUFFER, bs.vbo);
|
||||||
glBufferData(GL_ARRAY_BUFFER, bufferSize, bs.vertices.data(), GL_DYNAMIC_DRAW);
|
glBufferData(GL_ARRAY_BUFFER, bufferSize, bs.vertices.data(), GL_DYNAMIC_DRAW);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sendEbo(const BufferSet &bs) noexcept {
|
void sendEbo(BufferSet const&bs) noexcept {
|
||||||
const auto bufferSize = static_cast<GLsizeiptr>(sizeof(decltype(bs.elements)::value_type) * bs.elements.size());
|
const auto bufferSize = static_cast<GLsizeiptr>(sizeof(decltype(bs.elements)::value_type) * bs.elements.size());
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bs.ebo);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bs.ebo);
|
||||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, bufferSize, bs.elements.data(), GL_STATIC_DRAW);
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, bufferSize, bs.elements.data(), GL_STATIC_DRAW);
|
||||||
|
@ -162,7 +162,7 @@ FrameBuffer generateFrameBuffer(int width, int height) noexcept;
|
|||||||
/**
|
/**
|
||||||
* Resizes a FrameBuffer, and creates if it does not already exist.
|
* Resizes a FrameBuffer, and creates if it does not already exist.
|
||||||
*/
|
*/
|
||||||
void resizeInitFrameBuffer(FrameBuffer *fb, int width, int height) noexcept;
|
void resizeInitFrameBuffer(FrameBuffer &fb, int width, int height) noexcept;
|
||||||
|
|
||||||
struct BufferSet {
|
struct BufferSet {
|
||||||
glutils::GLVertexArray vao;
|
glutils::GLVertexArray vao;
|
||||||
@ -173,9 +173,9 @@ struct BufferSet {
|
|||||||
ox::Vector<GLuint> elements;
|
ox::Vector<GLuint> elements;
|
||||||
};
|
};
|
||||||
|
|
||||||
void sendVbo(const BufferSet &bs) noexcept;
|
void sendVbo(BufferSet const&bs) noexcept;
|
||||||
|
|
||||||
void sendEbo(const BufferSet &bs) noexcept;
|
void sendEbo(BufferSet const&bs) noexcept;
|
||||||
|
|
||||||
void clearScreen() noexcept;
|
void clearScreen() noexcept;
|
||||||
|
|
||||||
|
@ -13,10 +13,12 @@
|
|||||||
namespace nostalgia::core {
|
namespace nostalgia::core {
|
||||||
|
|
||||||
template<bool alpha = false>
|
template<bool alpha = false>
|
||||||
ox::Error toPngFile(ox::CStringView const&path, TileSheet::SubSheet const&s, Palette const&pal, int8_t bpp) noexcept {
|
ox::Error toPngFile(
|
||||||
|
ox::CStringView const&path, TileSheet::SubSheet const&s, Palette const&pal, int8_t bpp) noexcept {
|
||||||
ox::Vector<uint8_t> pixels;
|
ox::Vector<uint8_t> pixels;
|
||||||
s.readPixelsTo(&pixels, bpp);
|
s.readPixelsTo(&pixels, bpp);
|
||||||
const unsigned rows = s.rows == -1 ? static_cast<unsigned>(pixels.size()) / PixelsPerTile : static_cast<unsigned>(s.rows);
|
const unsigned rows = s.rows == -1 ?
|
||||||
|
static_cast<unsigned>(pixels.size()) / PixelsPerTile : static_cast<unsigned>(s.rows);
|
||||||
const unsigned cols = s.columns == -1 ? 1 : static_cast<unsigned>(s.columns);
|
const unsigned cols = s.columns == -1 ? 1 : static_cast<unsigned>(s.columns);
|
||||||
const auto width = cols * TileWidth;
|
const auto width = cols * TileWidth;
|
||||||
const auto height = rows * TileHeight;
|
const auto height = rows * TileHeight;
|
||||||
@ -35,7 +37,8 @@ ox::Error toPngFile(ox::CStringView const&path, TileSheet::SubSheet const&s, Pal
|
|||||||
++idx;
|
++idx;
|
||||||
}
|
}
|
||||||
constexpr auto fmt = alpha ? LCT_RGBA : LCT_RGB;
|
constexpr auto fmt = alpha ? LCT_RGBA : LCT_RGB;
|
||||||
return OxError(static_cast<ox::ErrorCode>(lodepng_encode_file(path.c_str(), outData.data(), width, height, fmt, 8)));
|
return OxError(static_cast<ox::ErrorCode>(
|
||||||
|
lodepng_encode_file(path.c_str(), outData.data(), width, height, fmt, 8)));
|
||||||
}
|
}
|
||||||
|
|
||||||
TileSheetEditorImGui::TileSheetEditorImGui(turbine::Context &ctx, ox::CRStringView path):
|
TileSheetEditorImGui::TileSheetEditorImGui(turbine::Context &ctx, ox::CRStringView path):
|
||||||
@ -280,7 +283,7 @@ void TileSheetEditorImGui::drawTileSheet(ox::Vec2 const&fbSize) noexcept {
|
|||||||
const auto winPos = ImGui::GetWindowPos();
|
const auto winPos = ImGui::GetWindowPos();
|
||||||
const auto fbSizei = ox::Size(static_cast<int>(fbSize.x), static_cast<int>(fbSize.y));
|
const auto fbSizei = ox::Size(static_cast<int>(fbSize.x), static_cast<int>(fbSize.y));
|
||||||
if (m_framebuffer.width != fbSizei.width || m_framebuffer.height != fbSizei.height) {
|
if (m_framebuffer.width != fbSizei.width || m_framebuffer.height != fbSizei.height) {
|
||||||
glutils::resizeInitFrameBuffer(&m_framebuffer, fbSizei.width, fbSizei.height);
|
glutils::resizeInitFrameBuffer(m_framebuffer, fbSizei.width, fbSizei.height);
|
||||||
m_tileSheetEditor.resizeView(fbSize);
|
m_tileSheetEditor.resizeView(fbSize);
|
||||||
} else if (m_tileSheetEditor.updated()) {
|
} else if (m_tileSheetEditor.updated()) {
|
||||||
m_tileSheetEditor.ackUpdate();
|
m_tileSheetEditor.ackUpdate();
|
||||||
|
@ -20,9 +20,9 @@ ox::Error SceneEditorView::setupScene() noexcept {
|
|||||||
|
|
||||||
void SceneEditorView::draw(int width, int height) noexcept {
|
void SceneEditorView::draw(int width, int height) noexcept {
|
||||||
if (width != m_frameBuffer.width || height != m_frameBuffer.height) {
|
if (width != m_frameBuffer.width || height != m_frameBuffer.height) {
|
||||||
glutils::resizeInitFrameBuffer(&m_frameBuffer, width, height);
|
glutils::resizeInitFrameBuffer(m_frameBuffer, width, height);
|
||||||
}
|
}
|
||||||
const glutils::FrameBufferBind frameBufferBind(m_frameBuffer);
|
glutils::FrameBufferBind const frameBufferBind(m_frameBuffer);
|
||||||
core::gl::draw(*m_cctx, {width, height});
|
core::gl::draw(*m_cctx, {width, height});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user