2012-03-21 30 views
-1

所以我一直試圖讓分辨率設置在我的遊戲中正常工作一段時間無濟於事。我有一個16:9的比例,我試圖保持不變。我正在使用SDL和openGL。這是我的改變分辨率類:openGL分辨率設置,屏幕表現無法解釋

#ifndef _RESOLUTION_CPP_ 
#define _RESOLUTION_CPP_ 

#include "Main.h" 

class Resolution{ 

public: 

static void ChangeResolution(SDL_Surface* Screen,int Width,int Height, bool FullScreen){ 
    int Full = 0; 
    if(FullScreen){ 
     Full = SDL_FULLSCREEN; 
    } 
Screen = SDL_SetVideoMode(Width , Height, 32, SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER | SDL_OPENGL| Full); 

glClearColor(0, 0, 0, 0); 
glClearDepth(1.0f); 

glViewport(0, 0, Width, Height); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 

//glOrtho(0, Width, Height, 0, 1, -1); 
glOrtho(0, 960,540, 0, 1, -1); 

glMatrixMode(GL_MODELVIEW); 

glEnable(GL_TEXTURE_2D); 

glLoadIdentity(); 
} 

}; 

#endif 

現在,一開始我還glOrtho設置爲與窗口的大小和視口縮放沿,但讓我看到更多屏幕的窗口大小有較大的,這WASN不是我想要的。所以通過設置相機(glOrtho就像相機吧?)爲了保持恆定的寬度和高度,我總能看到屏幕的相同部分。到現在爲止還挺好。

現在在窗口模式下嘗試遊戲,一切正常,因爲它應該。遊戲的圖形比例,保持縱橫比,我總是看到屏幕的相同部分。

現在想全屏5:4顯示器,這是我得到什麼:

enter image description here

左:960×540 --- 中東:1024x576 --- 右:1200x675

正如你所看到的,只有中間的一個正在工作,因爲它應該被拉伸以填充屏幕,但不能拉伸以破壞縱橫比。左邊的是保持寬高比,但沒有足夠的縮放比例。

右邊那個垂直拉伸,高寬比被打破。這是爲什麼?爲什麼會這樣拉長呢?

另外,我如何去關注屏幕居中,這樣,在中間的顯示器上,頂部和底部將是一個黑色空間,而不僅僅是頂部的一個大空間?

附加信息:

當我嘗試這一個16:10的筆記本電腦,我得到了類似的結果有沒有足夠的規模或不居中屏幕,但它永遠不會捉襟見肘。即使將其設置爲1920,1080的巨大分辨率。它的尺寸比屏幕大得多,所以我只能看到一小部分,但我猜測你不能以更小的分辨率擠壓1920x1080。

所以我的問題是:爲什麼分辨率是完全不可預知的?有時它會延伸,有時它不夠大,等等。我該如何解決這個問題?

+0

也許[本SO問題](http://stackoverflow.com/questions/ mathch 2571402/c-opengl-glortho-please-explain-this-usage-this-command)將會有所幫助。 – 2012-03-21 03:53:05

+0

你有沒有考慮過將代碼放在實際的文章中,而不是放在其他網站上? – 2012-03-21 06:12:41

回答

0
glOrtho(0, 960,540, 0, 1, -1); 

的paramters可以在多個(GLfloat)寬度/(GLfloat)高度,使得比將與視口