OpenGL テクスチャ バッファを処理して、グレースケール値のバッファを、選択した式によってオンザフライで RGB 値に変換する方法があるかどうか疑問に思っていました。
私はすでにうまく機能しますが、カラー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);
//...
シェーダー
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";
たとえば、下の画像に示すように、imagesc のような matlab で効果を再現しようとしています。