小编pro*_*eon的帖子

使用SDL和OpenGL调整窗口大小

在写这个问题之前,我已经阅读了这个问题:使用OpenGL和SDL处理窗口大小调整.然而,这个问题并没有解决我的问题,因为我使用的是SDL2而不是SDL1.2.但我确实使用OpenGL2.我的完整源代码位于:http://dpaste.com/17BVBP6

我正在编写一个程序,在窗口中显示一个白色方块.但是我在处理窗口调整大小事件时遇到了麻烦.这是我的调整大小功能:

void resize(int width,int height)
{
    if(height<=0)    height=1;

    glViewport(0,0,(GLsizei)width,(GLsizei)height);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60.0f,float(width)/float(height),1.0f,100.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
Run Code Online (Sandbox Code Playgroud)

我的主要事件循环:

while( !quit )
        {
            while( SDL_PollEvent( &e ) != 0 )
            {
                switch (e.type) {
                case SDL_QUIT:
                    quit=true;
                    break;
                case SDL_WINDOWEVENT_SIZE_CHANGED:
                    resize(e.window.data1,e.window.data2);
                    break;
                case SDL_KEYDOWN:
                    switch (e.key.keysym.sym) {
                    case SDLK_ESCAPE:
                        quit=true;
                        break;
                    default:
                        break;
                    }
                default:
                    break;
                }
            }

            render();

            update(gWindow);
        }
Run Code Online (Sandbox Code Playgroud)

未调整大小时,这是我的窗口: 未调整大小时,渲染正确完成

调整大小时,这是我的窗口: 调整大小时渲染未正确完成

造成问题的原因是什么?

opengl sdl opengl-2.0 sdl-2

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

标签 统计

opengl ×1

opengl-2.0 ×1

sdl ×1

sdl-2 ×1