Похоже, что я должен использовать GL_LUMINANCE
вместо GL_RGBA
для третьего аргумента.
Редактировать (в ответ на комментарии):
Когда я устанавливаю 7-й аргумент в GL_LUMINANCE
(как и 3-й), картинка полностью искажается. С пиксельным форматом DICOM кажется, что седьмой аргумент должен быть по какой-то причине GL_RGBA
.
Странное поведение, потому что я использую стандарт DICOM . Конкретный читатель DICOM, который я использую, выдает целочисленные значения пикселей (так как значения пикселей могут превышать нормальный максимум 255). По какой-то странной причине комбинация сообщения OpenGL о том, что я использую формат RGBA, но при передаче целочисленных значений, создала идеальное изображение.
Поскольку я все равно усекал значения DICOM> 255 пикселей, было логично скопировать значения в массив GLbyte. Однако после этого при вызове glTexImage2D
возникла ошибка SIGSEGV (ошибка сегментации). Изменение седьмого параметра на GL_LUMINANCE
(как обычно требуется) вернуло функциональность в нормальное состояние.
Странно, а?
Итак, примечание для всех разработчиков, использующих формат изображения DICOM: вам нужно преобразовать целочисленный массив в массив символов, прежде чем передавать его в glTexImage2D
, или просто установить 7-й аргумент в GL_RGBA
(последний, вероятно, не рекомендуется).