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