У меня короткий вопрос. Почему OpenGL поставляется со своими собственными типами данных для стандартных типов, таких как int, unsigned int, char и так далее? И нужно ли мне их использовать вместо типов данных C ++?
Например, OpenGL эквивалентно unsigned int
является GLuint
и для строки с есть GLchar*
вместо char*
,
Например, OpenGL эквивалентно
unsigned int
являетсяGLuint
Нет, это не так, и это точно Зачем вы должны использовать типы данных OpenGL при взаимодействии с OpenGL.
GLuint
не «эквивалентен» unsigned int
, GLuint
является требуется быть размером 32 бита. это всегда 32-битный размер. unsigned int
может быть быть 32-битным размером. Это может быть 64-битным. Вы не знаете, и С не собирается говорить вам (за пределами sizeof
).
Эти типы данных будут определены для каждой платформы, и они могут быть определены по-другому для разных платформ. Вы используете их, потому что, даже если они определены по-разному, они всегда будут иметь одинаковые размеры. Размеры, которые ожидают и требуют API OpenGL.
Я не эксперт OpenGL
, но обычно фреймворки / платформы, такие как OpenGL
, Qt
и т. д. определяют свои собственные типы данных, чтобы значение и емкость базового типа данных оставались одинаковыми в разных ОС. Обычно такое поведение получается с помощью макросов препроцессора C / C ++, но что касается GLuint
Вроде бы просто typedef
в gl.h
:
typedef unsigned int GLuint;
Так что ответ — да. Вы должны использовать типы данных платформы для обеспечения хорошей переносимости вашего кода в этой среде между операционными системами.