マスク (情報工学)
このような引数を持つ関数の内部では、個々のビットを取出すのに AND 演算を行っている。例えば、glClear() の実装は次のようになる。
この手法の利点は、引数の個数を削減することでオーバーヘッドを削減できる点である。データとして受け渡しできる最小単位は1バイトなので、それぞれの操作を別々の引数で受け渡すと、引数当たり7ビットが無駄となり、余分なスタック領域を占有することになる。実際には引数は32ビットの整数であることが多く、その場合は32個のオプションを1つの引数で指定できる。しかし、この手法を単純に実装すると型安全ではなくなる。GLbitfield は単純に unsigned int で定義されているので、コンパイラは glClear(42) や glClear(GL_POINTS) といった無意味な呼び出しがあってもエラーを検出できない。C++では、glClear が受け取る引数群をクラスとしてカプセル化でき、型安全性を保証できる(外部リンク参照)。