Мне было интересно, если бы я мог обработать буферы текстур OpenGL, чтобы буфер оттенков серого преобразовывался в значения rgb на лету через какую-то формулу по моему выбору.Яркость от OpenGL до цветного отображения?
У меня уже есть функция, которая хорошо работает, но выводит цвет 3 вектора.
rgb convertToColor(float value);
Я новичок в OpenGL, и было интересно, какой шейдер я должен использовать, и где она должна идти. Моя программа в настоящее время циклы кадры, как например:
program1.bind();
program1.setUniformValue("texture", 0);
program1.enableAttributeArray(vertexAttr1);
program1.enableAttributeArray(vertexTexr1);
program1.setAttributeArray(vertexAttr1, vertices.constData());
program1.setAttributeArray(vertexTexr1, texCoords.constData());
glBindTexture(GL_TEXTURE_2D, textures[0]);
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,widthGL,heightGL, GL_LUMINANCE,GL_UNSIGNED_BYTE, &displayBuff[displayStart]);
glDrawArrays(GL_TRIANGLES, 0, vertices.size());
glBindTexture(GL_TEXTURE_2D,0);
//...
Shader
QGLShader *fshader1 = new QGLShader(QGLShader::Fragment, this);
const char *fsrc1 =
"uniform sampler2D texture;\n"
"varying mediump vec4 texc;\n"
"void main(void)\n"
"{\n"
" gl_FragColor = texture2D(texture, texc.st);\n"
"}\n";
Я пытаюсь воссоздать эффекты в MATLAB, как imagesc, как видно, например, на изображении ниже:
Это хороший ответ, но я нахожу кривые обучения невероятно крутым. – Mikhail
@Mikhail: попробуйте прочитать так называемую «OpenGL Orange book» -> «OpenGL shading language 3rd edition». Это должно помочь вам лучше понять шейдеры. – SigTerm
Например, неясно, как сразу привязать два буфера к программе OpenGL. – Mikhail