0

これは非常に愚かな質問かもしれないし、そうでないかもしれないので、私は謝罪しますが、私はまだどの本やチュートリアルでもこれに出くわしていません。また、どの言語にも適用できると思います...

640x480サイズのウィンドウを作成し、その中にサイズのオブジェクト/シェイプを作成32x32し、キーボード入力を使用してウィンドウの周りでシェイプを移動できると仮定します。

シェイプの動きを制御するために使用するものType(int、float ...)は重要ですか。明らかに、ピクセルの途中まで描画することはできませんが、形状を0.1fだけ移動すると(たとえば、glTranslation関数を使用して)、それを移動すると想定されるようになりint of 1ます...レンダリングされた形状を1/10移動しますか?ピクセルまたは?

笑われないように十分に説明できたと思います。

プログラムや潜在的ゲームの衝突検出やその他の機能の精度に影響を与える可能性があるため、これを尋ねるだけです。

4

3 に答える 3

1

glTranslateは、xyzによる翻訳を生成します。現在の行列(glMatrixMode)にこの変換行列が乗算され、その積が現在の行列に置き換わります。これは、glMultMatrixが引数として次の行列で呼び出されたかのようになります。

1 0 0 x 0 1 0 y 0 0 1 z 0 0 0 1マトリックスモードがGL_MODELVIEWまたはGL_PROJECTIONの場合、glTranslateの呼び出し後に描画されたすべてのオブジェクトが変換されます。

glPushMatrixとglPopMatrixを使用して、変換されていない座標系を保存および復元します。

これは、glTranslateが現在のマトリックスで使用するための変換を提供し、10進数以外の数値になることを意味します。半ピクセルは使用できません。glTranslateはdoubleまたはfloatのいずれかを受け取るため、x、y、またはzで1を移動することになっている場合は、引数として関数にfloat1またはdouble1を指定します。

http://www.opengl.org/sdk/docs/man2/xhtml/glTranslate.xml

于 2013-03-20T15:03:47.700 に答える
1

ポジショニングを表すためにフロートまたはダブルを使用する最も重要な理由は、バックグラウンド計算です。あなたがintsであなたの位置を計算し続けるならば、あなたはおそらくintに戻るために変換ステップを使わなければならないだけではありません。また、xステップごとにデータが失われます

于 2013-03-20T15:10:38.213 に答える
0

スプライトをアニメーション化して、更新ごとに1ピクセル未満の動きを持たせたい場合は、はい、浮動小数点を使用する必要があります。そうしないと、動きがありません。描画関数はおそらく最も近い整数に丸められるため、おそらくそれには関係ありません。ただし、もちろんサブピクセルの精度で描画することもできます。

于 2013-09-17T14:17:48.697 に答える