Я пытаюсь разработать код, в котором я загружаю 3d-модель с помощью assimp, выполняю операции с трехмерными координатами и нормалями вершин, а затем хочу получить свои текстуры в ЦП.
Я пытался использовать«glReadPixels» для извлечения текстур, но мои данные оказываются зажаты между [0 1], как они описывают в здесь .
Пример текстур, которые я использую:
glGenTextures(1, &pos3d);
glBindTexture(GL_TEXTURE_2D, pos3d);
glViewport(0, 0, width, height);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + gpos3dLayout, GL_TEXTURE_2D, pos3d, 0);
glBindTexture(GL_TEXTURE_2D, 0);
И затем я получаю, используя это:
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, pos3d);
glReadBuffer(GL_COLOR_ATTACHMENT0);
std::vector<GLfloat> positions3d(width * height * 4); // 4 because of RGBA * 1 float
glReadPixels(0, 0, width, height, GL_RGBA, GL_FLOAT, &positions3d[0]);
Как я уже сказал, мои значения, кажется, зажаты между 0 и 1. Так есть ли способ отключить это ограничение?