最終更新: mikk_ni3_92 2009年08月24日(月) 14:53:48履歴
現在地: メニュー >> 実践編12
INDEX:実践編11 << 実践編12 >> 実践編13
手順は以下の通り
【例】
簡略化のため画像読み込みはOpenCVのC++インターフェイスを用いている
【メモ】
補完フィルタは「GL_NEAREST」を指定する。
もし「GL_LINEAR」を指定すると、画像のつなぎ目が見える。
INDEX:実践編11 << 実践編12 >> 実践編13
手順は以下の通り
- 画像(6方向分)を用意
- テクスチャを作成
- 立方体の各面にテクスチャをはる
- 立方体の中に視点を置く
【例】
簡略化のため画像読み込みはOpenCVのC++インターフェイスを用いている
const char *filename[]={"posx.jpg","negx.jpg","posy.jpg","negy.jpg","posz.jpg","negz.jpg"}; enum{POSX,NEGX,POSY,NEGY,POSZ,NEGZ}; //テクスチャID unsigned int texId[6];//6方向分 ... ... void LoadTexture() { glGenTextures( 6, &texId[0] );//6枚のテクスチャ cv::Ptr<IplImage> imgA;//OpenCVの新しいC++インターフェイス for(int loop = 0;loop < 6;++loop) { imgA = cvLoadImage(filename[loop],CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if(imgA.empty()) { std::cerr << filename[loop] << " : Can't Load Image\n"; exit(EXIT_FAILURE); } cvFlip(imgA,imgA);//上下反転 glBindTexture( GL_TEXTURE_2D, texId[loop] ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);//色は置き換えてマッピング glTexImage2D(GL_TEXTURE_2D,0,GL_RGB8,imgA->width,imgA->height, 0,GL_BGR,GL_UNSIGNED_BYTE,imgA->imageData); std::cout << filename[loop] << " : Loaded .\n"; imgA.release(); } } ... ... //--------- 描画 ----------// ... ... DrawSkyBox() ... ...
【メモ】
補完フィルタは「GL_NEAREST」を指定する。
もし「GL_LINEAR」を指定すると、画像のつなぎ目が見える。