2010-11-20 10 views
0

テクスチャの使い方を尋ねたくありません。 :)OpenGLテクスチャは、私のbmpが好きではありません

私の問題は: 私はいくつかのテクスチャを使用しています。私はこのようなファイル名を変更したい場合はしかし:

(LoadBMP("grass.bmp", textureImage[3])) // I can see the grass 

(LoadBMP("parkett.bmp", textureImage[3])) // No texture, only white color 

するために、両方の写真は、同じディレクトリにあるとエラーメッセージはありません。

アイデア? おかげ ソーニャ (OpenGLの、Visual StudioのC++ 2010)

+2

'LoadBMP'はOpenGL関数ではなく、実際に何が起こっているのかを判断するのに十分なコンテキストの近くには何も提供していません。 OpenGLでテクスチャが設定されていない場合に返されるデフォルト値は "白のみ"なので、読み込みに失敗したと想定するのはかなり安全です。詳細については、LoadBMPを調べる必要があります。ちょうどそれをデバッガで実行し、何が起きているのかを確認してください。 –

答えて

2

ほとんどの場合、これらのテクスチャは異なるフォーマットを使用します(.bmpが1つだけの形式ではありません)とあなたの関数は一つだけをサポートしています。

最も単純で最良の解決策は、神秘的なLoadBMPではなく、テクスチャを読み込むための良いライブラリを使用することです。私はSOIL - Simple OpenGL Image Loader.をあなたのプロジェクトに追加するだけで、1回の関数呼び出しでOpenGLテクスチャIDにbmpjpg、またはpngのテクスチャをロードすることができます。

+0

こんにちは、あなたの答えに感謝します。問題は、それは大学のためのプロジェクトで、私は教授のLoadBMPを使う必要があるということです。他の可能性はありますか? – Sonja

+0

@ Sonja:両方のイメージが 'bmp'形式であることを確認するのはどうですか? – jwueller

+0

試してみてください:悪いビットマップをGIMPで開き、別のファイル名で24ビットのBMPとして保存して、新しいファイルを使ってやり直してください。私はビットマップとLoadBMPの内容のどちらも知らないので、何が起こるのか正確には分かりません。 – Kos

0

2番目のBMPが間違った内部データ形式(非BGRなど)を持っていると仮定できます。 Kosと合意しました - あなたはこの目的のためにいくつかのライブラリを使うべきです。 SFMLSDL_imageDevIL ...

0

2の非稼働テクスチャ電力の寸法は(すなわち1、2、4、8、16、32、...) - 「日がたくさんありますか?もしそうでなければ、それが働いていないのです。スケールまたはパッドのいずれか。

関連する問題