From 1877f1013dbaaebdd7c8b758176652b2e6fa5001 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sun, 20 Aug 2017 21:46:06 +0100 Subject: [PATCH] fix export blending issue (just disabled blend in equirectangular drawing), and cleanup a bit --- engine/app.cpp | 2 +- engine/canvas.cpp | 51 +++++++++++++++++++---------------------------- engine/main.cpp | 13 +++++++----- engine/wacom.h | 3 ++- 4 files changed, 31 insertions(+), 38 deletions(-) diff --git a/engine/app.cpp b/engine/app.cpp index 3bf898f..9287467 100644 --- a/engine/app.cpp +++ b/engine/app.cpp @@ -62,7 +62,7 @@ void App::init() { GL_DEBUG_SEVERITY_MEDIUM, FOREGROUND_GREEN | FOREGROUND_INTENSITY }, { GL_DEBUG_SEVERITY_HIGH, FOREGROUND_RED | FOREGROUND_INTENSITY }, }; - if (severity == GL_DEBUG_SEVERITY_MEDIUM || severity == GL_DEBUG_SEVERITY_HIGH || severity == GL_DEBUG_SEVERITY_LOW) + if (severity == GL_DEBUG_SEVERITY_HIGH || severity == GL_DEBUG_SEVERITY_MEDIUM || severity == GL_DEBUG_SEVERITY_LOW) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), colors[severity]); LOG("OPENGL: %.*s", length, message); diff --git a/engine/canvas.cpp b/engine/canvas.cpp index 98e4e1a..34e75a0 100644 --- a/engine/canvas.cpp +++ b/engine/canvas.cpp @@ -75,33 +75,21 @@ void ui::Canvas::pick_update(int plane) m_tmp[i].bindFramebuffer(); m_tmp[i].clear({ 1, 1, 1, 1 }); + ShaderManager::use(ui::kShader::TextureAlpha); + ShaderManager::u_int(kShaderUniform::Highlight, false); + ShaderManager::u_int(kShaderUniform::Tex, 0); + ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f)); + glActiveTexture(GL_TEXTURE0); + m_sampler.bind(0); for (auto layer_index : m_order) { - // copy to tmp2 for layer blending - glActiveTexture(GL_TEXTURE0); // TODO: maybe remove this line -// #ifndef __IOS__ -// m_tex2[i].bind(); -// glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, m_width, m_height); -// m_tex2[i].unbind(); -// #endif - - m_layers[layer_index].m_rtt[i].bindTexture(); - glActiveTexture(GL_TEXTURE1); - m_tex2[i].bind(); - m_sampler.bind(0); - m_sampler_bg.bind(1); - ShaderManager::use(ui::kShader::TextureAlpha); - ShaderManager::u_int(kShaderUniform::TexBG, 1); ShaderManager::u_float(kShaderUniform::Alpha, m_layers[layer_index].m_opacity); - ShaderManager::u_int(kShaderUniform::Highlight, false); - ShaderManager::u_int(kShaderUniform::Tex, 0); - ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f)); + m_layers[layer_index].m_rtt[i].bindTexture(); m_plane.draw_fill(); - m_sampler.unbind(); - m_sampler_bg.unbind(); - m_tex2[i].unbind(); m_layers[layer_index].m_rtt[i].unbindTexture(); } + m_sampler.unbind(); + if (!m_pick_data[plane]) m_pick_data[plane] = std::make_unique(m_width*m_height); glReadPixels(0, 0, m_width, m_height, GL_RGBA, GL_UNSIGNED_BYTE, m_pick_data[plane].get()); @@ -811,16 +799,17 @@ void ui::Canvas::export_equirectangular(std::string data_path) m_tmp[i].unbindFramebuffer(); } -// auto data = std::make_unique(m_tmp[0].bytes()); -// for (int i = 0; i < 6; i++) -// { -// m_tmp[i].readTextureData(data.get()); -// static char name[128]; -// sprintf(name, "%s/Face%d.png", data_path.c_str(), i); -// LOG("writing %s", name); -// int ret = stbi_write_png(name, m_tmp[i].getWidth(), m_tmp[i].getHeight(), 4, data.get(), m_tmp[i].stride()); -// } - + //auto data = std::make_unique(m_tmp[0].bytes()); + //for (int i = 0; i < 1; i++) + //{ + // m_tmp[i].readTextureData(data.get()); + // static char name[128]; + // sprintf(name, "%s/Face%d.png", data_path.c_str(), i); + // LOG("writing %s", name); + // int ret = stbi_write_png(name, m_tmp[i].getWidth(), m_tmp[i].getHeight(), 4, data.get(), m_tmp[i].stride()); + //} + + glDisable(GL_BLEND); glViewport(0, 0, m_latlong.getWidth(), m_latlong.getHeight()); glActiveTexture(GL_TEXTURE0); m_latlong.bindFramebuffer(); diff --git a/engine/main.cpp b/engine/main.cpp index f25c500..b3fd90c 100644 --- a/engine/main.cpp +++ b/engine/main.cpp @@ -366,23 +366,26 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) App::I.key_char((int)wp); break; case WM_MOUSEMOVE: - App::I.mouse_move((float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), WacomTablet::I.get_pressure()); + //TODO: find a way to check if event is mouse/stylus. For now use Mouse for all + App::I.mouse_move((float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), WacomTablet::I.get_pressure(), kEventSource::Mouse); break; case WM_LBUTTONDOWN: - App::I.mouse_down(0, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), WacomTablet::I.get_pressure()); + //TODO: find a way to check if event is mouse/stylus. For now use Mouse for all + App::I.mouse_down(0, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), WacomTablet::I.get_pressure(), kEventSource::Mouse); SetCapture(hWnd); break; case WM_LBUTTONUP: WacomTablet::I.reset_pressure(); - App::I.mouse_up(0, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp)); + //TODO: find a way to check if event is mouse/stylus. For now use Mouse for all + App::I.mouse_up(0, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), kEventSource::Mouse); ReleaseCapture(); break; case WM_RBUTTONDOWN: - App::I.mouse_down(1, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), 1.f); + App::I.mouse_down(1, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), 1.f, kEventSource::Mouse); SetCapture(hWnd); break; case WM_RBUTTONUP: - App::I.mouse_up(1, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp)); + App::I.mouse_up(1, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), kEventSource::Mouse); ReleaseCapture(); break; case WM_MOUSEWHEEL: diff --git a/engine/wacom.h b/engine/wacom.h index b2769a9..231d14d 100644 --- a/engine/wacom.h +++ b/engine/wacom.h @@ -9,6 +9,7 @@ class WacomTablet { +public: HCTX g_hCtx = NULL; AXIS TabletPressure = { 0 }; LOGCONTEXTA glogContext = { 0 }; @@ -19,7 +20,7 @@ class WacomTablet bool m_mouse_down = false; HCTX TabletInit(HWND hWnd); -public: + static WacomTablet I; bool init(HWND hWnd); void terminate();