質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

1114閲覧

opengl 色空間グレースケールの指定方法はどうすればいいのか知りたい。glTexImage2D

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/01/02 03:43

編集2022/01/02 03:53

提示コードのコメント部内部のコードですがグレースケールの色が来た場合G_REDと指定したのですがこれは正しいのでしょうか?
GL_RED_INTEGERGL_REDどっちを指定すればいいか知りたいです。RoughnessMapのテクスチャです。
イメージ説明

公式リファレンス: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml

cpp

1 2// ##################################### テクスチャをロード ##################################### 3FrameWork::Texture FrameWork::LoadTexture(const char* fileName) 4{ 5 Texture texture; 6 7 glm::ivec2 size; 8 int channel; 9 10 unsigned char* data = NULL; 11 data = stbi_load(fileName, &size.x, &size.y, &channel, 0); 12 13 texture.size = size; 14 15 16 if (data == NULL) 17 { 18 std::cerr << "画像が見つかりません: " << fileName << std::endl; 19 assert(0); 20 } 21 22 glGenTextures(1, &texture.ID); //テクスチャIDの生成 23 glBindTexture(GL_TEXTURE_2D, texture.ID); // IDバインド 24 25 //テクスチャ生成 26 27 if (channel == 4) 28 { 29 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.x, size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); 30 } 31 else if (channel == 3) 32 { 33 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size.x, size.y, 0, GL_RGB, GL_UNSIGNED_BYTE, data); 34 } 35////////////////////////////////////////////////////////////////////////////////////////////////////////////// 36 else if (channel == 2) 37 { 38 glTexImage2D(GL_TEXTURE_2D, 0, GL_RG, size.x, size.y, 0, GL_RG, GL_UNSIGNED_BYTE, data); 39 } 40 else if (channel == 1) 41 { 42 glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, size.x, size.y, 0, GL_RED, GL_UNSIGNED_BYTE, data); 43 } 44///////////////////////////////////////////////////////////////////////////////////////////////////////////// 45 else 46 { 47 std::cerr << "未対応の形式のチャンネル数です: " << fileName <<" "<< "チャンネル数: "<<channel<< std::endl; 48 assert(0); 49 } 50 51 // テクスチャの補間設定 52 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 53 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 54 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); // we clamp to the edge as the blur filter would otherwise sample repeated texture values! 55 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 56 glGenerateMipmap(GL_TEXTURE_2D); 57 glBindTexture(GL_TEXTURE_2D, 0); 58 59 stbi_image_free(data); 60 61 return texture; 62 63}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問