From b9e17ec4220d0e838d8edc2d0243f123fb896a9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=88=8C=E7=84=B6=20=E7=8E=8B?= <2581147812@qq.com> Date: Wed, 16 Aug 2023 14:27:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9Game=EF=BC=8C=E4=B8=BB?= =?UTF-8?q?=E8=A6=81=E6=98=AF=E8=BF=9B=E8=A1=8C=E5=B9=B3=E7=A7=BB=E5=92=8C?= =?UTF-8?q?=E6=97=8B=E8=BD=AC=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Game.cpp | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/src/Game.cpp b/src/Game.cpp index eda00ec..9cdd8f4 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -8,7 +8,10 @@ struct Game::Private { // P-IMPL pattern glm::mat4x4 viewMat; glm::mat4x4 projMat; - OBJ monkey; + //OBJ monkey; + OBJ redopencv; + OBJ greenopencv; + OBJ blueopencv; }; Game::Game() : m_private(std::make_unique()) {} @@ -31,8 +34,10 @@ void Game::set_window(GLFWwindow *window) { #endif void Game::initialize() { - /* m_private->monkey.load_obj(OPENGLTUTOR_HOME "assets/opencvpart.obj"); */ - m_private->monkey.load_obj(OPENGLTUTOR_HOME "assets/monkey.obj"); + m_private->redopencv.load_obj(OPENGLTUTOR_HOME "assets/opencvpart.obj"); + m_private->greenopencv.load_obj(OPENGLTUTOR_HOME "assets/opencvpart.obj"); + m_private->blueopencv.load_obj(OPENGLTUTOR_HOME "assets/opencvpart.obj"); + /*m_private->monkey.load_obj(OPENGLTUTOR_HOME "assets/monkey.obj");*/ /* m_private->monkey.load_obj(OPENGLTUTOR_HOME "assets/cube.obj"); */ CHECK_GL(glEnable(GL_DEPTH_TEST)); CHECK_GL(glEnable(GL_MULTISAMPLE)); @@ -52,21 +57,46 @@ void Game::render() { glfwGetWindowSize(m_window, &width, &height); CHECK_GL(glViewport(0, 0, width, height)); - CHECK_GL(glClearColor(0.0f, 0.0f, 0.0f, 0.0f)); + CHECK_GL(glClearColor(0.5f, 0.5f, 0.5f, 0.0f)); CHECK_GL(glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT)); auto projection = m_inputCtl.get_projection_matrix(); CHECK_GL(glMatrixMode(GL_PROJECTION)); CHECK_GL(glLoadMatrixf(glm::value_ptr(projection))); - + auto view = m_inputCtl.get_view_matrix(); - + glm::mat4x4 model(1.0f); - glColor3f(0.9f, 0.6f, 0.1f); + glColor3f(1.0f,0,0); + + //red + CHECK_GL(glMatrixMode(GL_MODELVIEW)); + model = glm::translate(glm::mat4x4(1), glm::vec3(0, 0.5f, 0)) * glm::rotate(glm::mat4x4(1),glm::radians(150.0f),glm::vec3(0,0,1.0f)) * + glm::rotate(glm::mat4x4(1), glm::radians(90.0f), glm::vec3(1.0f, 0, 0)) * + glm::scale(glm::mat4x4(1), glm::vec3(0.5f, 0.5f, 0.5f)) * model; + CHECK_GL(glLoadMatrixf(glm::value_ptr(view * model))); + m_private->redopencv.draw_obj(true); + + model = glm::mat4(1.0f); + glColor3f(0, 0,1.0f); + //green + CHECK_GL(glMatrixMode(GL_MODELVIEW)); + model = glm::translate(glm::mat4x4(1), glm::vec3(0.65f, -0.5f, 0)) * glm::rotate(glm::mat4x4(1), glm::radians(-30.0f), glm::vec3(0, 0, 1.0f)) * + glm::rotate(glm::mat4x4(1), glm::radians(90.0f), glm::vec3(1.0f,0,0)) * + glm::scale(glm::mat4x4(1), glm::vec3(0.5f, 0.5f, 0.5f))*model; + CHECK_GL(glLoadMatrixf(glm::value_ptr(view * model))); + m_private->greenopencv.draw_obj(true); + model = glm::mat4(1.0f); + glColor3f(0, 1.0f, 0); + //blue CHECK_GL(glMatrixMode(GL_MODELVIEW)); + model = glm::translate(glm::mat4x4(1), glm::vec3(-0.65f, -0.5f, 0)) * glm::rotate(glm::mat4x4(1), glm::radians(-90.0f), glm::vec3(0, 0, 1.0f)) * + glm::rotate(glm::mat4x4(1), glm::radians(90.0f), glm::vec3(1.0f, 0, 0)) * + glm::scale(glm::mat4x4(1), glm::vec3(0.5f, 0.5f, 0.5f)) * model; CHECK_GL(glLoadMatrixf(glm::value_ptr(view * model))); - m_private->monkey.draw_obj(true); + m_private->blueopencv.draw_obj(true); + }