2012-05-11 2 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

관련 문제