0

次のように描画する頂点配列があります(これを単一のglDrawArrays呼び出しに変換するように取り組んでいるため、ここでは問題になりません)。

gl.glVertexPointer(3, GL.GL_FLOAT, 0, buff);
for ( int i = 0; i < numPoints; i++  ) {
    gl.glDrawArrays(GL.GL_LINE_LOOP, i*verticesPerPoint, verticesPerPoint);
}

これは機能しますが、描画されているラインループをスケーリングしたいと思います。glDrawArraysを呼び出すglScaled前に呼び出してみましたが、ポイントが表示されません。スケーリングはラインループを所定の位置にスケーリングするだけだと思いましたが、そうではないようです。

同じバッファを異なるスケールで再利用できることを望んでいたため、バッファ内の頂点がスケールされていないことに注意してください。アイデアは、パスごとに配列を再作成せずに、一定のピクセルサイズで形状を再描画できるということです。

誰かが私が間違っていることを説明できますか、またはこれが可能かどうかさえわかりますか?

4

1 に答える 1

3

現在のマトリックスモードがGL_MODELVIEWマトリックスモードに設定された状態でglScaleが適用されていることを確認しますか?もしそうなら、それはオブジェクト空間が変換される前または後に呼び出されますか?glScale [f / d]の使用は適切なアプローチであり、頂点データに適用されますが、「一定のピクセルサイズ」についての言及は、これがおそらく2Dの問題であることを示唆しています。その場合、 glViewportの仕組みを調べる価値があるかもしれません。

于 2011-10-26T04:54:18.583 に答える