私は以下の質問に答えました。彼の支援のためにgavinbに感謝します。Uint8をunsigned charのRGB値に変換します
質問: 私は学習体験のためだけにテクスチャを複製しようとしています。私は24ビットのTGA画像を使用していますが、SDLで読み込んでいます。私は
struct Colour24
{
unsigned char r;
unsigned char g;
unsigned char b;
}
unsigned char* texture = new unsigned char[width * height * 3];
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
int index = (y * width) + x;
Colour24 colour = getColourAt(x, y);
newTexture[index] = colour.r;
newTexture[index + 1] = colour.g;
newTexture[index + 2] = colour.b;
}
}
Colour24 getColour(int x, int y)
{
Uint32 pixel;
Uint8 red, green, blue;
Colour24 rgb;
pixel = getPixel(m_surface, x, y); // using the SDL get pixel function
SDL_GetRGB(pixel, m_surface->format, &red, &green, &blue);
rgb.r = red;
rgb.b = blue;
rgb.g = green;
return rgb;
}
OLD私自身の構造を作成しました: 私はOpenGLのテクスチャにこれを送信することを計画していると私は直接表面 - >ピクセルを送信するとき、それは作業を行います。しかし、自分でデータ配列を作成したいと思います。ヘルプは大歓迎です!
編集:申し訳ありませんが、私は十分に自分自身を説明しませんでした。私は手動で24ビットTGA画像を含むSDL_Surfaceからテクスチャを手動で再作成しようとしています。次に、テクスチャを作成するためにOpenGLに渡します。私は、表面 - >ピクセルで私のOpenGLコードをテストし、うまく動作します。私はちょうど私が間違ってどこにそれを読み込みに取り組んでいます。
まさに問題は何?コンパイラエラー?あなたは何を期待していませんか?少なくとも、関数定義の同じレベルにコードが含まれているため、コードは不完全です。 – bjhend
このテクスチャをOpenGLに読み込むことはできますが、正しくありません。私は、赤、緑、青のクロスハッチングが起こっています。 – rocklobster