こんにちは、
よく探してたが、
C言語のOpenGLで一つだけじゃなくて複数のテクスチャをロードする方法は?
見つかったコードは 「一つだけのテクスチャをロードする」
ーーーーーーーーーーー
void LoadGLTextures() {
// Load Texture
Image *image1;
// allocate space for texture
image1 = (Image *) malloc(sizeof(Image));
if (image1 == NULL) {
printf("Error allocating space for image");
exit(0);
}
if (!ImageLoad("Data/01.bmp", image1)) {
exit(1);
}
// Create Texture
glGenTextures(1, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]); // 2d texture (x and y size)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // scale linearly when image bigger than texture
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // scale linearly when image smalled than texture
// 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image,
// border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.
glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->sizeX, image1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->data);
};
ーーーーーーーーーーー
お願いします
No.1ベストアンサー
- 回答日時:
全容がわからないのですが、これで画像1枚は読み込める、というのであれば下記のようにすれが複数テクスチャを使えるようになると思います。
void LoadGLTextures(char* filename) {
// Load Texture
Image *image1;
// allocate space for texture
image1 = (Image *) malloc(sizeof(Image));
if (image1 == NULL) {
printf("Error allocating space for image");
exit(0);
}
if (!ImageLoad(filename, image1)) {
exit(1);
}
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // scale linearly when image bigger than texture
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // scale linearly when image smalled than texture
// 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image,
// border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.
glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->sizeX, image1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->data);
// たぶんここでimage1のfreeが抜けている
};
まず、上記関数を作っておき、読み込みはこのようにします。
int num_textures = 4;
// ↑ texture配列の大きさとあわせてください
glGenTextures(num_textures, texture);
glBindTexture(GL_TEXTURE_2D, texture[0]);
LoadGLTextures("Data/01.bmp");
glBindTexture(GL_TEXTURE_2D, texture[1]);
LoadGLTextures("Data/02.bmp");
glBindTexture(GL_TEXTURE_2D, texture[2]);
LoadGLTextures("Data/03.bmp");
glBindTexture(GL_TEXTURE_2D, texture[3]);
LoadGLTextures("Data/04.bmp");
そして使用時には、このようにすると、対象のテクスチャを使用できます。
glBindTexture(GL_TEXTURE_2D, texture[2]); // texture[2]にセットした画像を使う
// あとは普通の描画
glBegin(...);
...
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 下記の英文の日本語訳をお願いします。 1 2023/03/02 10:01
- 英語 下記の英文を日本語に訳して、その意味を教えてください。 1 2023/03/09 14:13
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- 大学受験 準同型写像 2 2023/03/16 18:16
- PHP 'member_picture/'に/がありますが 、「スラッシュ」は必要でしょうか? 1 2022/11/27 04:32
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- 英語 どうか教えてください。 1 2022/08/28 15:05
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PictureBoxでのアニメーション...
-
VBによる回帰直線のプログラム
-
他のフォームから別のフォーム...
-
ClickとChangeイベントの違いは...
-
C言語のサフィックスについて
-
【VB.NET】テキストボックスに...
-
プログラムの素朴な質問です 分...
-
sublimit textっていうエディタ...
-
演奏記号の・・・・
-
Functionの戻り値を配列にした...
-
アクセスできない保護レベルエ...
-
VB.NETでのイベントの途中終了
-
visual basic初心者です。 visu...
-
Vba 電卓のテキストボックスに...
-
VBA public変数はどのようなこ...
-
文字列を日付型情報として計算...
-
パーソナルXLSBのfuctionを呼び...
-
プロシージャを呼び出したプロ...
-
三項でたとえば交換って
-
VBでの入力値制限について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SavePictureで保存できない
-
文字間の幅の設定
-
Matlabでsin波を使って矩形波を...
-
ボールが壁に当たって跳ね返る...
-
FlexGridで文字色を変更。
-
[ASP]小数点第2位以下をカット!
-
C言語のOpenGLで複数のテクスチ...
-
VB6 ドラッグ&ドロップ
-
ピッ、ってアルファベットでど...
-
もぐらたたきのプログラミング
-
PictureBoxでのアニメーション...
-
グラフィックの表示について VB6
-
(VB)ピクチャボックスに表示し...
-
ホンテットマンションに乗った...
-
SCALEの使い方教えてください
-
VB6でマウスのドラッグで範囲を...
-
一次元静電粒子コードについて...
-
日付の計算
-
画像処理
-
sublimit textっていうエディタ...
おすすめ情報