QT QML 3DでC++でアプリケーションを開発しています。私はフラグメントシェーダに何十もの浮動小数点値(または浮動小数点数のベクトル)を渡す必要があります。これらの値はライトの位置と色ですので、0.0〜1.0の範囲の値より多く必要です。しかし、QMLの浮動小数点数または整数の配列をシェーダに渡すサポートはありません。私の考えは、フロートをテクスチャに保存し、テクスチャをシェーダに渡し、そこから値を取得することです。float値のテクスチャをシェーダに渡します
私はこのような何か試してみました:
float array [4] = {100.5, 60.05, 63.013, 0.0};
uchar data [sizeof array * sizeof(float)];
memcpy(data, &array, sizeof array * sizeof(float));
QImage img(data, 4, 1, QImage::Format_ARGB32);
をしてsampler2DとしてフラグメントシェーダにこのQImageのを渡します。しかし、GLSLのテクスチャから値を取得するmemcpyのようなメソッドがありますか? texelFetchメソッドは、浮動小数点数の範囲が0.0〜1.0のvec4のみを返します。シェーダのテクスチャから元の値を取得するにはどうすればよいですか? 私はsampler2D型を使用する方が好きですが、GLSLにダイレクトメモリアクセスをサポートする他の型がありますか?
[フロートの配列から新しいQImageを作成する方法](https://stackoverflow.com/questions/3379268/how-to-create-a-new-qimage-from-an-array- of-floats?rq = 1) – Rabbid76
これは私の問題を解決しません。私は正しい浮動小数点値でQImageを作成するための問題はありません。シェーダ(GLSL)でこれらの値にアクセスするのに問題があります。 – david