2012-02-20 36 views
4

私は852x640の入力テクスチャと612x612の出力テクスチャを持っています。私はシェーダーを介して入力を渡しており、出力をスケーリングして適切にトリミングする必要があります。 squareCoordinatestextureCoordinatesviewPortsが正しく動作するのに問題があります。OpenGLでテクスチャを切り抜く方法

私はちょうど作物を望んでいません、私はできるだけ多くの量の画像を得るために同様に拡大縮小したいと思います。それぞれの側で

  1. スケール画像クロップオフ過剰101px
  2. 612x814へ:私はフォトショップを使用していた場合、私は(私は1つのステップでこれをやろうとしているOpenGLで)二段階でこれを行うだろう

私は、標準的な正方形の頂点とテクスチャの頂点を使用しています:

static const GLfloat squareVertices[] = { 
    -1.0f, -1.0f, 
    1.0f, -1.0f, 
    -1.0f, 1.0f, 
    1.0f, 1.0f, 
}; 

static const GLfloat squareTextureVertices[] = { 
    0.0f, 0.0f, 
    1.0f, 0.0f, 
    0.0f, 1.0f, 
    1.0f, 1.0f 
} 

私は正確にビューポートがどうあるべきか分かりません。

答えて

6

ビューポートは612x612ピクセルになります。 (あなたのケースでは、我々は変わらないsquareVerticesを残して)最も簡単な方法は、612x612矩形をカバーするために頂点を設定することであろうオリジナルのクワッドを拡大縮小してトリミングする

が、設定されたテクスチャはそう左座標と右側がアウトクロップされています

static const GLfloat squareTextureVertices[] = { 
    (852.0f-640.0f)/852.0f*0.5f, 0.0f, 
    1.0f - (852.0f-640.0f)/852.0f*0.5f, 0.0f, 
    (852.0f-640.0f)/852.0f*0.5f, 1.0f, 
    1.0f - (852.0f-640.0f)/852.0f*0.5f, 1.0f 
} 
関連する問題