mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	OpenGL/DirextX examples: comments and tweaks.
This commit is contained in:
		| @@ -168,11 +168,9 @@ LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||||||
|             io.AddInputCharacter((unsigned short)wParam); |             io.AddInputCharacter((unsigned short)wParam); | ||||||
|         return true; |         return true; | ||||||
|     case WM_DESTROY: |     case WM_DESTROY: | ||||||
|         { |         Cleanup(); | ||||||
|             Cleanup(); |         PostQuitMessage(0); | ||||||
|             PostQuitMessage(0); |         return 0; | ||||||
|             return 0; |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|     return DefWindowProc(hWnd, msg, wParam, lParam); |     return DefWindowProc(hWnd, msg, wParam, lParam); | ||||||
| } | } | ||||||
| @@ -180,14 +178,14 @@ LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||||||
| // Notify OS Input Method Editor of text input position (e.g. when using Japanese/Chinese inputs, otherwise this isn't needed) | // Notify OS Input Method Editor of text input position (e.g. when using Japanese/Chinese inputs, otherwise this isn't needed) | ||||||
| static void ImImpl_ImeSetInputScreenPosFn(int x, int y) | static void ImImpl_ImeSetInputScreenPosFn(int x, int y) | ||||||
| { | { | ||||||
| 	if (HIMC himc = ImmGetContext(hWnd)) |     if (HIMC himc = ImmGetContext(hWnd)) | ||||||
| 	{ |     { | ||||||
| 		COMPOSITIONFORM cf; |         COMPOSITIONFORM cf; | ||||||
| 		cf.ptCurrentPos.x = x; |         cf.ptCurrentPos.x = x; | ||||||
| 		cf.ptCurrentPos.y = y; |         cf.ptCurrentPos.y = y; | ||||||
| 		cf.dwStyle = CFS_FORCE_POSITION; |         cf.dwStyle = CFS_FORCE_POSITION; | ||||||
| 		ImmSetCompositionWindow(himc, &cf); |         ImmSetCompositionWindow(himc, &cf); | ||||||
| 	} |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| void InitImGui() | void InitImGui() | ||||||
| @@ -218,7 +216,7 @@ void InitImGui() | |||||||
|     io.KeyMap[ImGuiKey_Z] = 'Z'; |     io.KeyMap[ImGuiKey_Z] = 'Z'; | ||||||
|  |  | ||||||
|     io.RenderDrawListsFn = ImImpl_RenderDrawLists; |     io.RenderDrawListsFn = ImImpl_RenderDrawLists; | ||||||
| 	io.ImeSetInputScreenPosFn = ImImpl_ImeSetInputScreenPosFn; |     io.ImeSetInputScreenPosFn = ImImpl_ImeSetInputScreenPosFn; | ||||||
|      |      | ||||||
|     // Create the vertex buffer |     // Create the vertex buffer | ||||||
|     if (g_pd3dDevice->CreateVertexBuffer(10000 * sizeof(CUSTOMVERTEX), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL) < 0) |     if (g_pd3dDevice->CreateVertexBuffer(10000 * sizeof(CUSTOMVERTEX), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL) < 0) | ||||||
| @@ -310,36 +308,31 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE, LPWSTR, int) | |||||||
|          |          | ||||||
|         UpdateImGui(); |         UpdateImGui(); | ||||||
|  |  | ||||||
|         // Create a simple window |  | ||||||
|         // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug" |  | ||||||
|         static bool show_test_window = true; |         static bool show_test_window = true; | ||||||
|         static bool show_another_window = false; |         static bool show_another_window = false; | ||||||
|         static float f; |  | ||||||
|         ImGui::Text("Hello, world!"); |  | ||||||
|         ImGui::SliderFloat("float", &f, 0.0f, 1.0f); |  | ||||||
|         show_test_window ^= ImGui::Button("Test Window"); |  | ||||||
|         show_another_window ^= ImGui::Button("Another Window"); |  | ||||||
|  |  | ||||||
|         // Calculate and show framerate |         // 1. Show a simple window | ||||||
|         static float ms_per_frame[120] = { 0 }; |         // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug" | ||||||
|         static int ms_per_frame_idx = 0; |  | ||||||
|         static float ms_per_frame_accum = 0.0f; |  | ||||||
|         ms_per_frame_accum -= ms_per_frame[ms_per_frame_idx]; |  | ||||||
|         ms_per_frame[ms_per_frame_idx] = ImGui::GetIO().DeltaTime * 1000.0f; |  | ||||||
|         ms_per_frame_accum += ms_per_frame[ms_per_frame_idx]; |  | ||||||
|         ms_per_frame_idx = (ms_per_frame_idx + 1) % 120; |  | ||||||
|         const float ms_per_frame_avg = ms_per_frame_accum / 120; |  | ||||||
|         ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", ms_per_frame_avg, 1000.0f / ms_per_frame_avg); |  | ||||||
|  |  | ||||||
|         // Show the ImGui test window |  | ||||||
|         // Most of user example code is in ImGui::ShowTestWindow() |  | ||||||
|         if (show_test_window) |  | ||||||
|         { |         { | ||||||
|             ImGui::SetNewWindowDefaultPos(ImVec2(650, 20));     // Normally user code doesn't need/want to call it because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! |             static float f; | ||||||
|             ImGui::ShowTestWindow(&show_test_window); |             ImGui::Text("Hello, world!"); | ||||||
|  |             ImGui::SliderFloat("float", &f, 0.0f, 1.0f); | ||||||
|  |             show_test_window ^= ImGui::Button("Test Window"); | ||||||
|  |             show_another_window ^= ImGui::Button("Another Window"); | ||||||
|  |  | ||||||
|  |             // Calculate and show framerate | ||||||
|  |             static float ms_per_frame[120] = { 0 }; | ||||||
|  |             static int ms_per_frame_idx = 0; | ||||||
|  |             static float ms_per_frame_accum = 0.0f; | ||||||
|  |             ms_per_frame_accum -= ms_per_frame[ms_per_frame_idx]; | ||||||
|  |             ms_per_frame[ms_per_frame_idx] = ImGui::GetIO().DeltaTime * 1000.0f; | ||||||
|  |             ms_per_frame_accum += ms_per_frame[ms_per_frame_idx]; | ||||||
|  |             ms_per_frame_idx = (ms_per_frame_idx + 1) % 120; | ||||||
|  |             const float ms_per_frame_avg = ms_per_frame_accum / 120; | ||||||
|  |             ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", ms_per_frame_avg, 1000.0f / ms_per_frame_avg); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Show another simple window |         // 2. Show another simple window, this time using an explicit Begin/End pair | ||||||
|         if (show_another_window) |         if (show_another_window) | ||||||
|         { |         { | ||||||
|             ImGui::Begin("Another Window", &show_another_window, ImVec2(200,100)); |             ImGui::Begin("Another Window", &show_another_window, ImVec2(200,100)); | ||||||
| @@ -347,6 +340,13 @@ int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE, LPWSTR, int) | |||||||
|             ImGui::End(); |             ImGui::End(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         // 3. Show the ImGui test window. Most of the sample code is in ImGui::ShowTestWindow() | ||||||
|  |         if (show_test_window) | ||||||
|  |         { | ||||||
|  |             ImGui::SetNewWindowDefaultPos(ImVec2(650, 20));     // Normally user code doesn't need/want to call it because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! | ||||||
|  |             ImGui::ShowTestWindow(&show_test_window); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         // Rendering |         // Rendering | ||||||
|         g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, false); |         g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, false); | ||||||
|         g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, false); |         g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, false); | ||||||
|   | |||||||
| @@ -95,15 +95,15 @@ static void ImImpl_SetClipboardTextFn(const char* text) | |||||||
| // Notify OS Input Method Editor of text input position (e.g. when using Japanese/Chinese inputs, otherwise this isn't needed) | // Notify OS Input Method Editor of text input position (e.g. when using Japanese/Chinese inputs, otherwise this isn't needed) | ||||||
| static void ImImpl_ImeSetInputScreenPosFn(int x, int y) | static void ImImpl_ImeSetInputScreenPosFn(int x, int y) | ||||||
| { | { | ||||||
| 	HWND hwnd = glfwGetWin32Window(window); |     HWND hwnd = glfwGetWin32Window(window); | ||||||
| 	if (HIMC himc = ImmGetContext(hwnd)) |     if (HIMC himc = ImmGetContext(hwnd)) | ||||||
| 	{ |     { | ||||||
| 		COMPOSITIONFORM cf; |         COMPOSITIONFORM cf; | ||||||
| 		cf.ptCurrentPos.x = x; |         cf.ptCurrentPos.x = x; | ||||||
| 		cf.ptCurrentPos.y = y; |         cf.ptCurrentPos.y = y; | ||||||
| 		cf.dwStyle = CFS_FORCE_POSITION; |         cf.dwStyle = CFS_FORCE_POSITION; | ||||||
| 		ImmSetCompositionWindow(himc, &cf); |         ImmSetCompositionWindow(himc, &cf); | ||||||
| 	} |     } | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| @@ -115,8 +115,8 @@ static void glfw_error_callback(int error, const char* description) | |||||||
|  |  | ||||||
| static void glfw_mouse_button_callback(GLFWwindow* window, int button, int action, int mods) | static void glfw_mouse_button_callback(GLFWwindow* window, int button, int action, int mods) | ||||||
| { | { | ||||||
| 	if (action == GLFW_PRESS && button >= 0 && button < 2) |     if (action == GLFW_PRESS && button >= 0 && button < 2) | ||||||
| 		mousePressed[button] = true; |         mousePressed[button] = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| static void glfw_scroll_callback(GLFWwindow* window, double xoffset, double yoffset) | static void glfw_scroll_callback(GLFWwindow* window, double xoffset, double yoffset) | ||||||
| @@ -154,7 +154,7 @@ void InitGL() | |||||||
|     window = glfwCreateWindow(1280, 720, "ImGui OpenGL example", NULL, NULL); |     window = glfwCreateWindow(1280, 720, "ImGui OpenGL example", NULL, NULL); | ||||||
|     glfwMakeContextCurrent(window); |     glfwMakeContextCurrent(window); | ||||||
|     glfwSetKeyCallback(window, glfw_key_callback); |     glfwSetKeyCallback(window, glfw_key_callback); | ||||||
| 	glfwSetMouseButtonCallback(window, glfw_mouse_button_callback); |     glfwSetMouseButtonCallback(window, glfw_mouse_button_callback); | ||||||
|     glfwSetScrollCallback(window, glfw_scroll_callback); |     glfwSetScrollCallback(window, glfw_scroll_callback); | ||||||
|     glfwSetCharCallback(window, glfw_char_callback); |     glfwSetCharCallback(window, glfw_char_callback); | ||||||
|  |  | ||||||
| @@ -196,7 +196,7 @@ void InitImGui() | |||||||
|     io.SetClipboardTextFn = ImImpl_SetClipboardTextFn; |     io.SetClipboardTextFn = ImImpl_SetClipboardTextFn; | ||||||
|     io.GetClipboardTextFn = ImImpl_GetClipboardTextFn; |     io.GetClipboardTextFn = ImImpl_GetClipboardTextFn; | ||||||
| #ifdef _MSC_VER | #ifdef _MSC_VER | ||||||
| 	io.ImeSetInputScreenPosFn = ImImpl_ImeSetInputScreenPosFn; |     io.ImeSetInputScreenPosFn = ImImpl_ImeSetInputScreenPosFn; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     // Load font texture |     // Load font texture | ||||||
| @@ -206,35 +206,35 @@ void InitImGui() | |||||||
|     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | ||||||
|  |  | ||||||
| #if 1 | #if 1 | ||||||
| 	// Default font (embedded in code) |     // Default font (embedded in code) | ||||||
|     const void* png_data; |     const void* png_data; | ||||||
|     unsigned int png_size; |     unsigned int png_size; | ||||||
|     ImGui::GetDefaultFontData(NULL, NULL, &png_data, &png_size); |     ImGui::GetDefaultFontData(NULL, NULL, &png_data, &png_size); | ||||||
|     int tex_x, tex_y, tex_comp; |     int tex_x, tex_y, tex_comp; | ||||||
|     void* tex_data = stbi_load_from_memory((const unsigned char*)png_data, (int)png_size, &tex_x, &tex_y, &tex_comp, 0); |     void* tex_data = stbi_load_from_memory((const unsigned char*)png_data, (int)png_size, &tex_x, &tex_y, &tex_comp, 0); | ||||||
| 	IM_ASSERT(tex_data != NULL); |     IM_ASSERT(tex_data != NULL); | ||||||
| #else | #else | ||||||
| 	// Custom font from filesystem |     // Custom font from filesystem | ||||||
| 	io.Font = new ImBitmapFont(); |     io.Font = new ImBitmapFont(); | ||||||
| 	io.Font->LoadFromFile("../../extra_fonts/mplus-2m-medium_18.fnt"); |     io.Font->LoadFromFile("../../extra_fonts/mplus-2m-medium_18.fnt"); | ||||||
| 	IM_ASSERT(io.Font->IsLoaded()); |     IM_ASSERT(io.Font->IsLoaded()); | ||||||
|  |  | ||||||
|     int tex_x, tex_y, tex_comp; |     int tex_x, tex_y, tex_comp; | ||||||
| 	void* tex_data = stbi_load("../../extra_fonts/mplus-2m-medium_18.png", &tex_x, &tex_y, &tex_comp, 0); |     void* tex_data = stbi_load("../../extra_fonts/mplus-2m-medium_18.png", &tex_x, &tex_y, &tex_comp, 0); | ||||||
| 	IM_ASSERT(tex_data != NULL); |     IM_ASSERT(tex_data != NULL); | ||||||
|      |      | ||||||
| 	// Automatically find white pixel from the texture we just loaded |     // Automatically find white pixel from the texture we just loaded | ||||||
| 	// (io.FontTexUvForWhite needs to contains UV coordinates pointing to a white pixel in order to render solid objects) |     // (io.FontTexUvForWhite needs to contains UV coordinates pointing to a white pixel in order to render solid objects) | ||||||
| 	for (int tex_data_off = 0; tex_data_off < tex_x*tex_y; tex_data_off++) |     for (int tex_data_off = 0; tex_data_off < tex_x*tex_y; tex_data_off++) | ||||||
| 		if (((unsigned int*)tex_data)[tex_data_off] == 0xffffffff) |         if (((unsigned int*)tex_data)[tex_data_off] == 0xffffffff) | ||||||
| 		{ |         { | ||||||
| 			io.FontTexUvForWhite = ImVec2((float)(tex_data_off % tex_x)/(tex_x), (float)(tex_data_off / tex_x)/(tex_y)); |             io.FontTexUvForWhite = ImVec2((float)(tex_data_off % tex_x)/(tex_x), (float)(tex_data_off / tex_x)/(tex_y)); | ||||||
| 			break; |             break; | ||||||
| 		} |         } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex_x, tex_y, 0, GL_RGBA, GL_UNSIGNED_BYTE, tex_data); |     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex_x, tex_y, 0, GL_RGBA, GL_UNSIGNED_BYTE, tex_data); | ||||||
| 	stbi_image_free(tex_data); |     stbi_image_free(tex_data); | ||||||
| } | } | ||||||
|  |  | ||||||
| void UpdateImGui() | void UpdateImGui() | ||||||
| @@ -252,7 +252,7 @@ void UpdateImGui() | |||||||
|     double mouse_x, mouse_y; |     double mouse_x, mouse_y; | ||||||
|     glfwGetCursorPos(window, &mouse_x, &mouse_y); |     glfwGetCursorPos(window, &mouse_x, &mouse_y); | ||||||
|     io.MousePos = ImVec2((float)mouse_x * mousePosScale.x, (float)mouse_y * mousePosScale.y);      // Mouse position, in pixels (set to -1,-1 if no mouse / on another screen, etc.) |     io.MousePos = ImVec2((float)mouse_x * mousePosScale.x, (float)mouse_y * mousePosScale.y);      // Mouse position, in pixels (set to -1,-1 if no mouse / on another screen, etc.) | ||||||
|     io.MouseDown[0] = mousePressed[0] || glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT) != 0;  // If a mouse press event came, always pass it, so we don't miss click-release events that are shorted than our frame. |     io.MouseDown[0] = mousePressed[0] || glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT) != 0;  // If a mouse press event came, always pass it as "mouse held this frame", so we don't miss click-release events that are shorter than 1 frame. | ||||||
|     io.MouseDown[1] = mousePressed[1] || glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_RIGHT) != 0; |     io.MouseDown[1] = mousePressed[1] || glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_RIGHT) != 0; | ||||||
|  |  | ||||||
|     // Start the frame |     // Start the frame | ||||||
| @@ -268,41 +268,36 @@ int main(int argc, char** argv) | |||||||
|     while (!glfwWindowShouldClose(window)) |     while (!glfwWindowShouldClose(window)) | ||||||
|     { |     { | ||||||
|         ImGuiIO& io = ImGui::GetIO(); |         ImGuiIO& io = ImGui::GetIO(); | ||||||
| 		mousePressed[0] = mousePressed[1] = false; |         mousePressed[0] = mousePressed[1] = false; | ||||||
|         io.MouseWheel = 0; |         io.MouseWheel = 0; | ||||||
|         glfwPollEvents(); |         glfwPollEvents(); | ||||||
|         UpdateImGui(); |         UpdateImGui(); | ||||||
|  |  | ||||||
|         // Create a simple window |  | ||||||
|         // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug" |  | ||||||
|         static bool show_test_window = true; |         static bool show_test_window = true; | ||||||
|         static bool show_another_window = false; |         static bool show_another_window = false; | ||||||
|         static float f; |  | ||||||
|         ImGui::Text("Hello, world!"); |  | ||||||
|         ImGui::SliderFloat("float", &f, 0.0f, 1.0f); |  | ||||||
|         show_test_window ^= ImGui::Button("Test Window"); |  | ||||||
|         show_another_window ^= ImGui::Button("Another Window"); |  | ||||||
|  |  | ||||||
|         // Calculate and show framerate |         // 1. Show a simple window | ||||||
|         static float ms_per_frame[120] = { 0 }; |         // Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug" | ||||||
|         static int ms_per_frame_idx = 0; |  | ||||||
|         static float ms_per_frame_accum = 0.0f; |  | ||||||
|         ms_per_frame_accum -= ms_per_frame[ms_per_frame_idx]; |  | ||||||
|         ms_per_frame[ms_per_frame_idx] = ImGui::GetIO().DeltaTime * 1000.0f; |  | ||||||
|         ms_per_frame_accum += ms_per_frame[ms_per_frame_idx]; |  | ||||||
|         ms_per_frame_idx = (ms_per_frame_idx + 1) % 120; |  | ||||||
|         const float ms_per_frame_avg = ms_per_frame_accum / 120; |  | ||||||
|         ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", ms_per_frame_avg, 1000.0f / ms_per_frame_avg); |  | ||||||
|  |  | ||||||
|         // Show the ImGui test window |  | ||||||
|         // Most of user example code is in ImGui::ShowTestWindow() |  | ||||||
|         if (show_test_window) |  | ||||||
|         { |         { | ||||||
|             ImGui::SetNewWindowDefaultPos(ImVec2(650, 20));        // Normally user code doesn't need/want to call it because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly! |             static float f; | ||||||
|             ImGui::ShowTestWindow(&show_test_window); |             ImGui::Text("Hello, world!"); | ||||||
|  |             ImGui::SliderFloat("float", &f, 0.0f, 1.0f); | ||||||
|  |             show_test_window ^= ImGui::Button("Test Window"); | ||||||
|  |             show_another_window ^= ImGui::Button("Another Window"); | ||||||
|  |  | ||||||
|  |             // Calculate and show framerate | ||||||
|  |             static float ms_per_frame[120] = { 0 }; | ||||||
|  |             static int ms_per_frame_idx = 0; | ||||||
|  |             static float ms_per_frame_accum = 0.0f; | ||||||
|  |             ms_per_frame_accum -= ms_per_frame[ms_per_frame_idx]; | ||||||
|  |             ms_per_frame[ms_per_frame_idx] = ImGui::GetIO().DeltaTime * 1000.0f; | ||||||
|  |             ms_per_frame_accum += ms_per_frame[ms_per_frame_idx]; | ||||||
|  |             ms_per_frame_idx = (ms_per_frame_idx + 1) % 120; | ||||||
|  |             const float ms_per_frame_avg = ms_per_frame_accum / 120; | ||||||
|  |             ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", ms_per_frame_avg, 1000.0f / ms_per_frame_avg); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Show another simple window |         // 2. Show another simple window, this time using an explicit Begin/End pair | ||||||
|         if (show_another_window) |         if (show_another_window) | ||||||
|         { |         { | ||||||
|             ImGui::Begin("Another Window", &show_another_window, ImVec2(200,100)); |             ImGui::Begin("Another Window", &show_another_window, ImVec2(200,100)); | ||||||
| @@ -310,6 +305,13 @@ int main(int argc, char** argv) | |||||||
|             ImGui::End(); |             ImGui::End(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         // 3. Show the ImGui test window. Most of the sample code is in ImGui::ShowTestWindow() | ||||||
|  |         if (show_test_window) | ||||||
|  |         { | ||||||
|  |             ImGui::SetNewWindowDefaultPos(ImVec2(650, 20));        // Normally user code doesn't need/want to call this, because positions are saved in .ini file. Here we just want to make the demo initial state a bit more friendly! | ||||||
|  |             ImGui::ShowTestWindow(&show_test_window); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         // Rendering |         // Rendering | ||||||
|         glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y); |         glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y); | ||||||
|         glClearColor(0.8f, 0.6f, 0.6f, 1.0f); |         glClearColor(0.8f, 0.6f, 0.6f, 1.0f); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user