Поскольку OpenGL 2.0 не поддерживает следующие расширения:
glClampColorARB(GL_CLAMP_VERTEX_COLOR_ARB, GL_FALSE);
glClampColorARB(GL_CLAMP_READ_COLOR_ARB, GL_FALSE);
glClampColorARB(GL_CLAMP_FRAGMENT_COLOR_ARB, GL_FALSE);
Мне нужно настроить цели рендеринга с плавающей точкой, чтобы моя конечная текстура не была зажата между 0 и 1. в зависимости от необходимостивывод текстуры незашифрован, потому что я использую libGDX для обработки изображений.
Пытаясь несколько дней, чтобы заставить это работать:
frameBuffer1 = new FrameBuffer(usedFormat, w, h, true);
frameBuffer2 = new FrameBuffer(usedFormat, w, h, true);
frameBuffer1.begin();
gl20.glViewport(0, 0, frameBuffer1.getWidth(), frameBuffer1.getHeight());
gl20.glClearColor(0f, 0f, 0f, 0f);
gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
gl20.glActiveTexture(GL20.GL_TEXTURE0);
testTexture.bind(); //input image texture
gl20.glEnable(GL20.GL_TEXTURE_2D);
meshShader1.begin();
meshShader1.setUniformi("s_texture", 0);
mesh.render(meshShader1, GL20.GL_TRIANGLES);
meshShader1.end();
frameBuffer1.end();
frameBuffer2.begin();
gl20.glViewport(0, 0, frameBuffer2.getWidth(), frameBuffer2.getHeight());
gl20.glClearColor(0f, 0f, 0f, 0f);
gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
frameBuffer1.getColorBufferTexture().bind()
meshShader2.begin();
meshShader2.setUniformi("s_texture", 0);
mesh.render(meshShader2, GL20.GL_TRIANGLES);
meshShader2.end();
frameBuffer2.end();
У меня есть две простые программы шейдеров, чтобы проверить, сохраняет ли текстура незакрепленнуюценности.Первое вычитает 0,5 из входного изображения текстуры, а второе добавляет 0,5 к выходному сигналу первого буфера кадров.