私は、OpenGLのglTexImage2D関数でグレースケール画像を使用することはできますか?

StackOverflow https://stackoverflow.com/questions/680125

  •  22-08-2019
  •  | 
  •  

質問

私はそれがグレースケール画像だとしてのみ1チャネルを持つ質感を持っています。私はglTexImage2Dへの画素を通過するとき、それが赤色を出てくる。(明らかに、チャネル1が赤であるため、RGB)

glTexImage2D(
    GL_TEXTURE_2D, 0, GL_RGBA,
    dicomImage->GetColumns(), dicomImage->GetRows(),
    0, GL_RGBA, GL_UNSIGNED_BYTE, pixelArrayPtr);

私はGL_RGBAを変更できますか?もしそうなら、どのように?

他のヒント

私が第三引数の代わりにGL_LUMINANCEGL_RGBAを使用すべきであることが表示されます。

(コメントへの返信で)編集:

私はGL_LUMINANCEする第七引数(だけでなく、第三)に設定すると、画像が完全に歪んで行きます。 DICOMピクセルフォーマットで、第七引数が何らかの理由でGL_RGBAしなければならないことが表示されます。

私はDICOM の標準noreferrer">

FragmentShaderに、あなたが書くことができます:

uniform sampler2D A;
vec3 result = vec3(texture(A, TexCoord).r);

のcppファイルに、あなたが書くことができます:

glTexImage2D(
GL_TEXTURE_2D, 0, GL_RED,
dicomImage->GetColumns(), dicomImage->GetRows(),
0, GL_RED, GL_UNSIGNED_BYTE, pixelArrayPtr);
scroll top