2012-05-11 6 views
2

OpenGLで高さマップ画像を使用して地形を作ろうとしています。実験として私は4x4ピクセル画像を使用します。これはズームスクリーンショットです。ピクセルを見ることができます。高度マップの値を読み込んで地形を生成するにはどうすればよいですか?

enter image description here

これは私のコードの一部です。

ILubyte * image = ilGetData(); 

int bpp = ilGetInteger(IL_IMAGE_BPP); 
std::cout << "BPP = " << bpp << std::endl; 

for (int z=0; z < terrainHeight; ++z) 
{ 
    for (int x=0; x < terrainWidth; ++x) 
    { 
     pVertices[z*terrainWidth+x] = NxVec3(NxF32(x), 
      NxF32(image[z*terrainWidth+x]*bpp), NxF32(z)); 
    } 
} 

for (int i=0; i < vertexCount; ++i) 
{ 
    std::cout << "x = " << pVertices[i].x << "\t y = " 
      << pVertices[i].y << "\t z = " << pVertices[i].z << std::endl; 
} 

次に、私は次の結果を得ています。

enter image description here

Iは、(0,0)、(1,1)、(2,2)及び(3,3)が(y座標の場合)ゼロ値を期待しています。結果は異なります。なぜ私は期待された結果を得ていないのですか?

+0

「イメージ」の種類は何ですか? – miloszmaki

+0

私はJPEG画像を使用しています – shan

+0

私は変数の種類を意味し、画像自体は意味しません。 – miloszmaki

答えて

2

image[z*terrainWidth+x]*bppの代わりにimage[(z*terrainWidth+x)*bpp]とする必要があります。

+0

はい。それが問題です。ありがとう。 – shan

関連する問題