短い質問があります。OpenGLに、int、unsigned int、charなどの標準型用の独自のデータ型が付属しているのはなぜですか?そして、C ++データ型のビルドの代わりにそれらを使用する必要がありますか?
たとえば、OpenGLunsigned int
はisGLuint
に相当し、ac文字列の場合は。GLchar*
の代わりにありchar*
ます。
短い質問があります。OpenGLに、int、unsigned int、charなどの標準型用の独自のデータ型が付属しているのはなぜですか?そして、C ++データ型のビルドの代わりにそれらを使用する必要がありますか?
たとえば、OpenGLunsigned int
はisGLuint
に相当し、ac文字列の場合は。GLchar*
の代わりにありchar*
ます。
たとえば、OpenGL に相当するもの
unsigned int
は次のとおりです。GLuint
いいえ、そうではありません。それこそが、OpenGL とやり取りするときに OpenGL のデータ型を使用する必要がある理由です。
GLuint
と「同等」ではありませんunsigned int
。サイズは 32 ビットでGLuint
ある必要があります。サイズは常に32 ビットです。unsigned int
サイズが32 ビットの場合があります。64ビットかもしれません。あなたは知らないし、C はあなたに教えようとはしない (の外側でsizeof
)。
これらのデータ型はプラットフォームごとに定義され、プラットフォームごとに異なる定義になる場合があります。定義が異なっていても、常に同じサイズになるため、それらを使用します。OpenGL API が期待し、必要とするサイズ。
私はの専門家ではありませんが、通常、、OpenGL
などのフレームワーク/プラットフォームは、基になるデータ型の意味と容量が異なるOS間で同じになるように、独自のデータ型を定義します。通常、この動作はC / C ++プリプロセッサマクロを使用して取得されますが、懸念事項としては、次のようになります。OpenGL
Qt
GLuint
typedef
gl.h
typedef unsigned int GLuint;
だから答えはイエスです。フレームワークのデータ型を使用して、OS間でそのフレームワーク内のコードの移植性を確保する必要があります。