framework2

Форк
0
84 строки · 2.0 Кб
1
#include "ofxRaccoonImGui.hpp"
2

3
#include "imgui_impl_glfw.h"
4
#include "imgui_impl_opengl3.h"
5
#include "imgui_impl_opengl2.h"
6

7
namespace ofxRaccoonImGui {
8
	void initialize() {
9
		ImGui::CreateContext();
10

11
		ImGuiIO& io = ImGui::GetIO();
12
		io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
13
		//io.IniFilename = nullptr;
14

15
		ofAppGLFWWindow *window = dynamic_cast<ofAppGLFWWindow *>(ofGetWindowPtr());
16
		GLFWwindow *glfwWindow = window->getGLFWWindow();
17
		ImGui_ImplGlfw_InitForOpenGL(glfwWindow, true);
18

19
		if (ofIsGLProgrammableRenderer()) {
20
			ImGui_ImplOpenGL3_Init();
21
		}
22
		else {
23
			ImGui_ImplOpenGL2_Init();
24
		}
25
	}
26
	void shutdown() {
27
		if (ofIsGLProgrammableRenderer()) {
28
			ImGui_ImplOpenGL3_Shutdown();
29
		}
30
		else {
31
			ImGui_ImplOpenGL2_Shutdown();
32
		}
33
		ImGui_ImplGlfw_Shutdown();
34
		ImGui::DestroyContext();
35
	}
36

37
	static std::vector<std::shared_ptr<ofTexture>> textureStorage;
38

39
	void beginGui() {
40
		if (ofIsGLProgrammableRenderer()) {
41
			ImGui_ImplOpenGL3_NewFrame();
42
		}
43
		else {
44
			ImGui_ImplOpenGL2_NewFrame();
45
		}
46

47
		ImGui_ImplGlfw_NewFrame();
48
		ImGui::NewFrame();
49
	}
50
	void endGui() {
51
		ImGui::Render();
52

53
		if (ofIsGLProgrammableRenderer()) {
54
			ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
55
		}
56
		else {
57
			ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());
58
		}
59

60
		textureStorage.clear();
61
	}
62
	void image(const ofImage &ofimage) {
63
		image(ofimage, ofimage.getWidth(), ofimage.getHeight());
64
	}
65
	void image(const ofImage &ofimage, float width, float height) {
66
		if (ofimage.getTexture().getTextureData().textureTarget != GL_TEXTURE_2D) {
67
			bool arb = ofGetUsingArbTex();
68
			ofDisableArbTex();
69

70
			std::shared_ptr<ofTexture> texture = std::shared_ptr<ofTexture>(new ofTexture());
71
			textureStorage.push_back(texture);
72

73
			texture->loadData(ofimage.getPixels());
74
			ImGui::Image((ImTextureID)texture->getTextureData().textureID, ImVec2(width, height));
75

76
			if (arb) {
77
				ofEnableArbTex();
78
			}
79
		}
80
		else {
81
			ImGui::Image((ImTextureID)ofimage.getTexture().getTextureData().textureID, ImVec2(width, height));
82
		}
83
	}
84
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.