我在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