5

OpenGLは独自のデータ型を定義します。GLintまたはなどGLsizei。そして、それらはプラットフォーム間で異なります。タイプの制限はどこにありますか?

編集

ドメインを明確にするために言語タグを追加しました。また、GL *タイプは基本的なCタイプに解決されることを知っていますが、プラットフォームによって異なる場合があります。(実際には、それが定義されている理由です。)そして、基本的なCタイプでさえ、どのプラットフォームでも固定サイズであることが保証されていません。が存在するのはそのlimit.hためです。GL*タイプもCタイプとは意味的に異なり、独自の制限定義が必要なため、GL自体にも同様のことがあると思います。

4

2 に答える 2

3

編集: pmr が OpenGL 仕様から指摘しているように、GLintまたはGLsizeiが常に として定義されることは保証されないことに注意してくださいint少なくとも32 ビットGLintGLsizeiあることのみが保証されます。

GL/gl.h から

typedef int GLint;
typedef int GLsizei;

これらの型は int で、プラットフォームに応じたサイズです。最小値と最大値を取得するには、limits.h にある INT_MIN と INT_MAX を使用できます (C を想定)。

于 2012-08-17T19:43:09.277 に答える
3

C++ を使用していると仮定するとstd::numeric_limits<GLint>::max()、タイプまたはタイプの他のプロパティの正しい最大値を取得するために使用できます。

GLint仕様は、それがどのプラットフォームでも実際に であることを保証するものではなく、少なくとも 32 ビット幅の符号付き整数型であることのみを保証するため、MAX_INT は、実際には 32 ビット幅intのプラットフォームでの下限サイズです (例: )。intx86_64

于 2012-08-17T20:02:53.073 に答える