事前計算されたテクスチャを含むから浮動小数点数を読み取りCSV file
、それを 1 次元配列に格納してから、その読み取りデータを 2 次元テクスチャに入れようとしています。
データへのアクセスに問題があり、エラーの場所がわからないため、次のコードでそれが行われることを確認する必要があります。
// Allocate memory
float * image = new float [width * height * 3 ];
for( int i = 0; i < height; i++)
{
for( int j = 0; j < width-1; j++)
{
fscanf( fDataFile, "%f,", &fData );
image[ 4 * i * j + 0 ] = fData;
image[ 4 * i * j + 1 ] = fData;
image[ 4 * i * j + 2 ] = fData;
}
fscanf( fDataFile, "%f", &fData );
image[ 4 * i * width-1 + 0 ] = fData;
image[ 4 * i * width-1 + 1 ] = fData;
image[ 4 * i * width-1 + 2 ] = fData;
}
ここで問題はないはずですが、私が困っているのは次のことです。
// create the texture
glGenTextures(1, &texHandle);
glBindTexture(GL_TEXTURE_2D, texHandle);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_FLOAT, &image[0]);
glTexImage2D
一次元配列へのポインタを渡すだけでいいですか?
配列のサイズは width*height*3 で、テクスチャのフォーマットは width*height で 3 チャンネルにする必要があります。それでも私のプログラムは期待どおりに動作せず、これがエラーの潜在的な原因の 1 つです。