SDL_Window被无意中调整大小

时间:2015-04-06 22:09:14

标签: c++ opengl sdl

我正在为学校开展一个小型课程。它包括3D犯罪场景(我使用OpenGL来显示它),一些说明和一个主菜单。但是,我面临着一个非常不受欢迎的问题。

我遇到的问题如下:当我运行程序时,它具有所需的窗口大小(屏幕宽度* 0.85);但是,当程序进入主循环时,它会缩小。

奇怪的是,宽高比看似不会改变,只是窗口大小。

这是我的主循环:

 while (!quit) {
        if (mainMenu) {
            SDL_UpdateWindowSurface(mainWindow);
            SDL::keyTesting();

            menuImage->drawImage(mainSurface);

            instructionButton->drawButton(mainSurface);
            crimeButton->drawButton(mainSurface);

            SDL_Delay(10);
        } 
        else if (instructions) {
            SDL_UpdateWindowSurface(mainWindow);
            SDL::keyTesting();

            instructionsImage->drawImage(mainSurface);

            backButton->drawButton(mainSurface);

            SDL_Delay(10);
        }
        else if(modelView) {
            for (int i = 0; i < 100; i++)
                SDL::keyTesting();

            GLfloat currentFrame = glfwGetTime();
            deltaTime = currentFrame - lastFrame;
            lastFrame = currentFrame;

            glClearColor(0.2f, 0.2f, 0.2f, 1.0f);
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

            glUseProgram(modelProgram);

            glUniform3f(viewPosLoc, camera.Position.x, camera.Position.y, camera.Position.z);

            glm::mat4 projection = glm::perspective(camera.Zoom, (float)windowWidth/(float)windowHeight, 0.1f, 250.0f);
            glm::mat4 view = camera.GetViewMatrix();
            glUniformMatrix4fv(projLoc, 1, GL_FALSE, glm::value_ptr(projection));
            glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view));

            glm::mat4 modelMat;
            modelMat = glm::translate(modelMat, glm::vec3(0.0f, -1.75f, 0.0f));
            modelMat = glm::scale(modelMat, glm::vec3(1.5f, 1.5f, 1.5f));
            glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(modelMat));

            model->Draw(modelProgram);

            SDL_GL_SwapWindow(mainWindow);
        }
    }

1 个答案:

答案 0 :(得分:2)

尝试使用SDL_WINDOW_SHOWN标志。