Параметр типа OpenGL glGetTexImage2d? - PullRequest
2 голосов
/ 09 октября 2009

читая документы, я вижу, что функция glGetTexImage2d () имеет параметр 'type'. В документах говорится, что параметр типа «указывает тип данных пиксельных данных» и приводятся примеры таких типов, как GL_INT, GL_BYTE и т. Д.

но что это значит точно, когда формат изображения GL_RGBA и GL_INT? это int для каждого канала? или int для всего цвета? и если для целого цвета это int, то разве это не то же самое, что GL_BYTE? поскольку в int есть 4 байта, что делает каждый канал байтом каждый

Ответы [ 2 ]

4 голосов
/ 09 октября 2009

Это int на канал. RGBA означает, что в каждом пикселе есть массив R, G, B и A (если вы установите его в int) в массиве данных, который вы ему предоставляете. RBGA (если он существует, не уверен в этом) также будет означать четыре целых, но упорядочен по-другому. RGB будет означать только три (без альфа-канала).

4 голосов
/ 09 октября 2009

Параметр type указывает эффективный тип данных в буфере, который вы отправляете в OpenGL.

Целью здесь является то, что OpenGL будет ходить в ваш буфер и хочет знать, сколько элементов присутствует (width * height * internalformat) и их размер и интерпретация (type).

Например, если вы хотите предоставить массив беззнаковых целых, содержащих красные / зеленые / синие / альфа-каналы (в этом порядке), вам необходимо указать:

  • target: GL_TEXTURE_2D
  • level: 0 (кроме случаев использования мипмапов)
  • internalformat: 4, потому что у вас есть красный, зеленый, синий и альфа
  • width: 640
  • height: 480
  • border: 0
  • internal format: GL_RGBA сообщает opengl порядок наших каналов и их значение
  • type: GL_UNSIGNED_INT позволит opengl узнать тип элементов внутри нашего массива
  • pixels: указатель на ваш массив
...