我在OpenGL中做一个游戏,并使用SDL来管理窗口,设置图标和所有东西。 现在我已经设置渲染场景到framebuffer,我想知道是否可以调整SDL窗口的大小,同时保持我的起始GL设置(我试图模拟一个确切的分辨率,所以窗口大小调整是窗口大小的帧缓冲区重新缩放)OpenGL和SDL,在保持内部分辨率不变的情况下调整窗口大小?
我试着给SDL窗口分辨率的两倍,我把它传递给glortho,但它给出了意想不到的结果©。这是可能的,还是我需要将我的工作分辨率始终适应屏幕分辨率? 我使用此代码来初始化视频
SDL_SetVideoMode(XRES, YRES, bpp, SDL_OPENGL | SDL_HWPALETTE);
gl_init(XRES,YRES);
而进入gl_init我设置glortho到glOrtho(0,宽度,0,高度,-1,1),然后将帧缓冲器“空白”纹理的宽度和高度大小也是如此。
当上述函数被调用时,一切都很好。但是,如果我尝试像
SDL_SetVideoMode(XRES*2, YRES*2, bpp, SDL_OPENGL | SDL_HWPALETTE);
gl_init(XRES,YRES);
非但没有我预期的效果(倍线输出)的我发现,输出是最左边的X轴和Y轴的中间位置,就像如果某处GL的尺寸比屏幕还要大,其余的被裁剪掉。有什么我失踪?
我想保持我的GL“工作”分辨率在一个固定的大小......所以,如果窗口大小调整,我会继续在内部使用相同数量的像素,并特别避免非整数值,我由于破坏单像素细节的分部的舍入误差,因此在较旧的项目中出现问题。 – PatrickL83
@帕特里克:那么就做一个你想要的决议的FBO。然后将其绘制到实际的SDL窗口。 –
尼古拉斯,这就是我所说的。 – karx11erx