2012-01-09 16 views
0

Imは私のプログラムでは、いくつかのテクスチャを表示しようとしている、と私は、OpenGLのテクスチャにビットマップをロードするには、このコードを使用thatsのいる:テクスチャが正しくロードされていませんか?

void LoadGLTextures() 
{ 
    // Bitmap handle and structure 
    HBITMAP hBMP; 
    BITMAP BMP; 

    // Generate list of textures from resources 
    byte Texture[] = {IDB_FONT, IDB_SKIN, IDB_PIANO}; 
    glGenTextures(sizeof(Texture), &texture[0]); 

    // Iterate through texture list and load bitmaps 
    for (int loop=0; loop<sizeof(Texture); loop++) 
    { 
    hBMP = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(Texture[loop]), 
          IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION); 
    if (hBMP) 
    { 
    GetObject(hBMP,sizeof(BMP), &BMP); 
    glPixelStorei(GL_UNPACK_ALIGNMENT,4); 
    glBindTexture(GL_TEXTURE_2D, texture[loop]); 
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR); 

    // Generate Mipmapped Texture (3 Bytes, Width, Height And Data From The BMP) 
    gluBuild2DMipmaps(GL_TEXTURE_2D, 3, BMP.bmWidth, BMP.bmHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits); 
    DeleteObject(hBMP); 
    } 
    } 

そして、私の背景のスキンのロード中に、そして正確に描かれます、他の(ピアノ)テクスチャは描画されません。私はどのテクスチャが使用されているか(ピアノからこの場合は背景テクスチャに)スワップすると、他のテクスチャが描画されるので、描画コードが正しいことを確認してください。だから私はビットマップが正しく読み込まれていないと思う。しかし、私はなぜそれがわからないのですか?私は見落としてしまったことが明白な何かがありますか?

ビットマップは128×256で24ビットカラーです。

他のコードが必要な場合は教えてください。

編集 - 誰もが私が必要と何だろう任意のlibrarysを知っているならば、それは非推奨だので、それが正しく動作していない可能性があります

+0

他にこの質問が掲載されていますか? – Zoot

+0

Codeguru.com forums - そこに全く同じ質問をしました。 – Medicide

+0

ほとんどの人はあまり気にしません。 http://gamedev.stackexchange.com/やhttp://programmers.stackexchange.com/のようなStackExchangeファミリーのサイト内に何度も投稿していないことを確認してください。 – Zoot

答えて

0

私に知らせてください。 http://www.opengl.org/wiki/Common_Mistakesから

gluBuild2DMipmaps - これを使用しないでください。 GL_GENERATE_MIPMAP(GL 1.4が必要)またはglGenerateMipmap関数(GL 3.0が必要)のいずれかを使用します。

編集:glBindTextureを呼び出すループ内の各テクスチャユニットに対して、glEnable(GL_TEXTURE_2D)を呼び出す必要があります。

+0

まあ、おそらく本当に悪いプログラミングの練習しかし、私はこのプロジェクトのために旧バージョンのGLUTを使っています。私はちょうどプログラムに加えて、これはコードの90%を書き直す手間を省きます。 このコードはバックグラウンドテクスチャとして正しく動作しますので、このコードは他のテクスチャにも有効です。しかし、そうではありません。その見た目は、私はそれを書き直さなければならない可能性が高いですが、もし可能ならばそれを避けようとしています。 ご返信ありがとうございます。 -M – Medicide

+0

ありがとうございます。だから、ピアノのテクスチャを描くときに何を得ますか?それはちょうど黒として出てくるのですか? –

+0

ええ、それはちょうど黒です。私は描画でglColor()で色を変えることができますが、よりシンプルな/より小さなテクスチャを試してみました。異なるテクスチャ読み込み実装を試しましたが、まだ役に立たないです。そのことは、今、私を狂っています...しかし、私に戻ってくれてありがとう。その多くのappriciated! -M – Medicide

関連する問題