Я пытаюсь отправить массив значений с плавающей точкой (карту высот) в GLSL как GL_TEXTURE_2D.Хотя сэмплеры настроены правильно, проблема заключается в ограничении, которое происходит, когда я загружаю текстуру с помощью glTexImage2D ().
glGenTextures(1, &_idnewTID);
glBindTexture(GL_TEXTURE_2D, _idnewTID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, regMesh._cols, regMesh._rows, 0, GL_RED, GL_FLOAT, regMesh._heightMap);
Отправляемые значения находятся в диапазоне от 900.0f до 1590.0f.,Но это становится полностью ограниченным до 1.0f при загрузке в GL_TEXTURE_2D
.
Как сохранить значения от фиксации до [0,1].Как мне изменить функцию glTexImage2D (), чтобы добиться этого?
PS Я знаю, что сэмплер работает нормально, потому что когда я делю значения на 1500.0f и загружаю их в GPU и масштабирую в шейдере, я получаюправильная структура карты высот.