2017-04-21 4 views
0

OpenGL(または少なくともPyOpenGL)のすべての関数は、glRotatefglColor3fなどの末尾にfという文字列がありますが、意味が分かりません。単精度浮動小数点数をデフォルトで使用する1.0fのように機能しますか?OpenGL関数(glRotatefなど)で 'f'とは何ですか?

私はここにいますが(2つの質問をすることが許せば)、glColor3fglColor3fvの違いは何ですか?

+0

[glColor](https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glColor.xml)を見ましたか? – Vallentin

+0

私は持っていませんでした。私はそれが接尾辞なしで来るかもしれないことを知らなかったので、私はそのように見なかった。ポインタありがとう!私の推測は、右の笑だったことがわかる – polarisfox64

答えて

2

fは、関数がfloatを予期していることを示しています。したがって、iがある場合、その機能にはintが必要であることが示されます。 vはベクトルを表します。したがって、glColor3fvは、「浮動小数点型ベクトル」つまり浮動小数点型の配列を想定しています。

これは、glColorのドキュメントに明示されています。

void glColor3f(GLfloat red, GLfloat green, GLfloat blue); 
void glColor3fv(const GLfloat *v); 

フォーマットは、より明確明細書で説明される:

最終v文字は、存在する場合、コマンドはではなく値の配列(ベクトル)へのポインタを取ることを示しています一連の個々の議論。

は、一般的に、コマンド宣言はフォーム

rtype Name{∈1234}{∈ b s i i64 f d ub us ui ui64}{∈v} 

rtypeを持つ関数の戻り型です。中カッコ({})は一連のタイプ記述子(以下の表を参照)を囲み、その中の1つが選択されます。 ∈は型記述子を示さない。

文字がない場合、引数の型は明示的に指定されます。最後の文字がvでなければ、Nは1,2,3,4の数字で与えられます(数字がない場合は引数の数が固定されます)。

最後の文字がvの場合、arg1のみが存在し、指定されたタイプの値のNの配列です。

+------+----------------------------------+ 
| Type | Descriptor Corresponding GL Type | 
+------+----------------------------------+ 
| b | byte        | 
| s | short       | 
| i | int        | 
| i64 | int64       | 
| f | float       | 
| d | double       | 
| ub | ubyte       | 
| us | ushort       | 
| ui | uint        | 
| ui64 | uint64       | 
+------+----------------------------------+ 

OpenGL 4.5 Specification, Page 11 and 12

∈シンボル "の要素である" を意味します。

同じ原理がさまざまなもの、たとえばGL_RGBA32FGL_RGBA8Iで使用されています。これはOpenGLに特有のものではなく、様々なライブラリが期待したり返すタイプのプレフィックスを使います。

+0

ありがとう!まさに私が探していたもので、リンクされたページは非常に便利です – polarisfox64

+0

あなたは大歓迎です! :) – Vallentin

+0

@ polarisfox64:もし*なぜこのすべてが必要なのか不思議であれば、OpenGLはC APIであり、Cには関数のオーバーロードはありません。 – peppe

関連する問題