2011-07-28 6 views
3

私の四角形が画面の幅に収まるようにします。 私は次のように私のデバイス上でこれを行うことができた:OpenGL - 複数のデバイスで同じ大きさ

@Override 
public void onDrawFrame(GL10 gl) { 
    // Clears the screen and depth buffer. 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
    gl.glClearColor(1f, 1f, 1f, 1f); 
    // Replace the current matrix with the identity matrix 
    gl.glLoadIdentity(); 

    gl.glTranslatef(0f, 0f, -1.6f); 

    new Plane(1f,1f).draw(gl); 
} 

だから私の飛行機が広い1Fと高い1Fです。部品をスクリーン1.6fに移動することにより、スクエアはスクリーンの幅にきれいにフィットします。しかし、他のデバイスでは、スクエアが大きくなりすぎて画面の外に一部落ちてしまいます。

スクリーンの幅に四角形の幅を合わせるにはどうすればよいですか?

答えて

0

私はアンドロイドとオープンGLから始めているので、わからないヘルパークラスがいくつかあるかもしれません。

問題は、縦横比(aspectRatio = screenWidth/screenHeight)のIMOです。これはデバイスによって異なるため、飛行機が画面を離れるという問題が発生します。あなたは、アスペクト比に基づいてすべてをスケールするか、または常に画面の全幅にわたっているが、高さが異なる(あるアスペクト比に基づいて高さが調整される)いくつかのウィンドウを作成する必要があります。

アイデンティティプロジェクションとカメラを使用する場合、私はあなたがNDC空間(またはそのようなもの)にとどまると思うので、-1または+1の辺で四角形をレンダリングすると、画面全体クワッドと一緒に。

関連する問題