aboutsummaryrefslogtreecommitdiff
path: root/src/ogl.cpp
blob: 7d160e2fe4ef451d3ae64be902f5800a3ca28a17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "ogl.hpp"

#include <imgui_impl_opengl3_loader.h>

// These constants are omitted from the ImGui loader
#define GL_NEAREST 0x2600

OglImage::OglImage() {
    glGenTextures(1, &glHandle);
    glBindTexture(GL_TEXTURE_2D, glHandle);

    // Setup filtering parameters for display
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
}

OglImage::~OglImage() {
    glDeleteTextures(1, &glHandle);
}

void OglImage::upload(const char* data, int w, int h) {
    glBindTexture(GL_TEXTURE_2D, glHandle);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
}

ImTextureID OglImage::as_imgui() const {
    return static_cast<ImTextureID>(reinterpret_cast<uint32_t>(glHandle));
}