OpenGL の 3D テクスチャに問題があります。
テクスチャを設定します
glTexImage3D(GL_TEXTURE_3D, 0, GL_LUMINANCE, 640, 480, 8, 0, GL_RED, GL_UNSIGNED_BYTE, tex3Ddata);
tex3Ddata は 640x480 ビットマップの合計 8 スライスです。テクスチャ座標でさまざまなスライスにアクセスしようとすると、何らかの理由で画像が互いに溶け合ってしまい、座標を適切に設定できませんが、その理由はわかりません。テクスチャ スライス自体は 8 ビット モノクロです。
表示用のコード:
for(unsigned int i = 0; i < g_numCameras; i++) {
float tx = ((float)i) / ((float)g_numCameras - 1);
//tx = 0.5f; //this is for testing only
float fI = ((float)i) / ((float)g_numCameras);
if( i < (g_numCameras >> 1)) {
glTexCoord3f(0.0f, 1.0f, tx);
glVertex3f( -1.0f + fI * 4.0f, 0.0f, 0.5f);
glTexCoord3f(1.0f, 1.0f, tx);
glVertex3f( -1.0f + (fI + 1.0f / ((float)g_numCameras)) * 4.0f, 0.0f, 0.5f);
glTexCoord3f(1.0f, 0.0f, tx);
glVertex3f( -1.0f + (fI + 1.0f / ((float)g_numCameras)) * 4.0f, 1.0f, 0.5f);
glTexCoord3f(0.0f, 0.0f, tx);
glVertex3f( -1.0f + fI * 4.0f, 1.0f, 0.5f);
}
else {
fI -= 0.5f;
glTexCoord3f(0.0f, 1.0f, tx);
glVertex3f( -1.0f + fI * 4.0f, -1.0f, 0.5f);
glTexCoord3f(1.0f, 1.0f, tx);
glVertex3f( -1.0f + (fI + 1.0f / ((float)g_numCameras)) * 4.0f, -1.0f, 0.5f);
glTexCoord3f(1.0f, 0.0f, tx);
glVertex3f( -1.0f + (fI + 1.0f / ((float)g_numCameras)) * 4.0f, 0.0f, 0.5f);
glTexCoord3f(0.0f, 0.0f, tx);
glVertex3f( -1.0f + fI * 4.0f, 0.0f, 0.5f);
}
}
g_numCameras は 8 なので、Z 座標 0.0f、1/7、2/7、...、1.0f を介してスライスにアクセスできると思います。それでも、常に補間されます。私は tx=0.5f; でテストしました。も同様ですが、これも画像の組み合わせです。x/y 座標は適切に機能し、8 つのクワッドは期待どおりに配置されていますが、立方体をスライスするだけでは、期待どおりに機能しません。
ここで私が間違っていることはありますか?(3d テクスチャに関する同等の回答/例を見つけることができませんでした)。
また、同じ画像を 8 回アップロードしてデータが適切かどうかをテストしましたが、問題なく動作しました (補間により元の画像が得られるため、元の画像を取得しました)。