0
我有執行鄰投影此方法:如何處理自動旋轉屏幕上的正投影?
void myGL::ApplyOrtho(float maxX, float maxY) const
{
float a = 1.0f/maxX;
float b = 1.0f/maxY;
float ortho[16] = {
a, 0, 0, 0,
0, b, 0, 0,
0, 0, -1, 0,
0, 0, 0, 1};
GLint projectionUniform = glGetUniformLocation(m_simpleProgram, "Projection");
glUniformMatrix4fv(projectionUniform, 1, 0, &ortho[0]);
}
它當我做到這工作得很好iPad屏幕:
ApplyOrtho(2, 2*1024/768);
這裏是我的渲染圖像:
但是,當我旋轉到風景時,它看起來像這樣:
現在我的假設是,這是因爲ApplyOrtho
矩陣設置固定投影和而圖像是投影內旋轉,從而越來越胖顯示該投影不旋轉。
順便說一句,這是旋轉:
void myGL::ApplyRotation(float degrees) const
{
float radians = degrees * 3.14159f/180.0f;
float s = std::sin(radians);
float c = std::cos(radians);
float zRotation[16] = {
c, s, 0, 0,
-s, c, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
};
GLint modelviewUniform = glGetUniformLocation(m_simpleProgram, "Modelview");
glUniformMatrix4fv(modelviewUniform, 1, 0, &zRotation[0]);
}
這是正確的繪圖之前使用。
所以我嘗試,並試圖在此同時我旋轉:
ApplyOrtho(2*1024/768, 2);
然而這對沒有任何影響,即使旋轉的同時肯定發生。我的形象仍然是「胖」。
我的解釋是爲什麼肥胖的發生是正確的?
如何處理自動旋轉屏幕上的正投影?
UDPATE:使用屏幕(未iPhone 5)和使用ApplyOrtho(2,3)
和ApplyOrtho(3,2)
但「胖」三角形的2/3尺寸在橫向保持還試圖此iPhone上。
另外:視口是設置只需一次,所述第一正交之前:
glViewport(0, 0, width, height);
其中寬度和高度是肖像屏幕的尺寸。
你能告訴你如何設置視口? – Kimi
已更新的問題 – johnbakers
您是通過簡單地調用ApplyRotation來執行輪轉還是由設備方向更改造成的? – Kimi