相关疑难解决方法(0)

使用OpenGL和SDL处理窗口大小调整

从我有一个程序的代码,它在应用程序窗口周围绘制和移动方块,我在调整应用程序窗口大小时遇到​​了麻烦.当我处理调整大小并相应地改变状态时,屏幕上应该绘制并且在调整大小之前的所有内容都会消失.我不知道为什么因为在窗口大小调整期间没有任何对象内部坐标被更改.

我的问题是,任何人都可以指出我正确的方向来解决我的问题.(代码编译好)

void ResizeWindow()
{
    screen_width = event.resize.w;
    screen_height = event.resize.h;

    SDL_SetVideoMode(screen_width, screen_height, bpp, SDL_OPENGL | SDL_RESIZABLE | SDL_DOUBLEBUF);

    glViewport(0, 0, screen_width, screen_height);
    glMatrixMode(GL_PROJECTION);
    glOrtho(0, screen_width, 0, screen_height, -1, 1);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();
}
Run Code Online (Sandbox Code Playgroud)

主循环:

while (running == true)

{

    while(SDL_PollEvent(&event))

    {

        switch(event.type)

        {

            case SDL_VIDEORESIZE: ResizeWindow(); break; // resizing called here
            case SDL_QUIT: running = false; break;
            case SDL_KEYDOWN: square.Handle_Input(down); break;
            case SDL_KEYUP: square.Handle_Input(up); break;

        }

    }

    square.Move();
    square.Check_Collision();

    glClear(GL_COLOR_BUFFER_BIT);

    square.Draw();

    SDL_GL_SwapBuffers();

}
Run Code Online (Sandbox Code Playgroud)

这一切都完美运行,直到窗口调整大小.

opengl sdl

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

opengl ×1

sdl ×1