2011-07-30 12 views
4

私はパラメータとしてGLuintテクスチャを取得するメソッドを持っていて、その一部をレンダリングしたいとします。たとえば、タイルセットについて考えてみましょう。レベルをロードするときにタイルセットをロードして、そのタイルセット(タイル)をレンダリングできるようにしたいと考えています。C++ Opengl画像の一部をレンダリングする

描画するタイルセットのピクセル座標に何らかの形で高さ、幅、posXとposYを定義できるとすれば最適です。

私は今何時間も努力してきましたが、どんな助けにも感謝します。

私は現在、テクスチャを描画する方法の簡易版:あなたはこのglTexCoord機能を使用してください

void Render::draw(GLuint texture, float posX, float posY, float sizeX, float sizeY) { 

    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); 
    glAlphaFunc(GL_GREATER,0.1f); 

    glBindTexture(GL_TEXTURE_2D, texture); 
    glPushMatrix(); 
    glTranslatef(posX,posY,0); 
    glBegin(GL_QUADS); 

    //Bottom-left vertex (corner) 
    glTexCoord2i(0, 0); 
    glVertex2f(-sizeX,-sizeY); 
    //Bottom-right vertex (corner) 
    glTexCoord2i(1, 0); 
    glVertex2f(sizeX,-sizeY); 
    //Top-right vertex (corner) 
    glTexCoord2i(1, 1); 
    glVertex2f(sizeX,sizeY); 
    //Top-left vertex (corner) 
    glTexCoord2i(0, 1); 
    glVertex2f(-sizeX,sizeY); 

    glEnd(); 
    glPopMatrix(); 
    glDisable(GL_BLEND); 
} 

答えて

3

。あなたはタイルセットは4枚のタイルが含まれている、とあなたは左上[*]タイルを表示したい場合たとえば、あなたはこのような何か
を行うだろう:

glTexCoord2f(0, 0); 
glVertex2f(-sizeX,-sizeY); 
glTexCoord2f(0.5, 0); 
glVertex2f(sizeX,-sizeY); 
glTexCoord2f(0.5, 0.5); 
glVertex2f(sizeX,sizeY); 
glTexCoord2i(0, 0.5); 
glVertex2f(-sizeX,sizeY); 

を[*]私はどのように覚えていません座標は正確に動作しますが、コード内でテストするのは簡単です。

+0

ええ、それらの値は0から1までですが、代わりにピクセル座標を使用して位置を定義する方法はわかりますか? – Sane

+3

私はそれをついに見つけました!興味のある人のために私はその解決策を見つけました:http://www.gamedev.net/topic/559980-opengl-and-2d-tiles/ – Sane

関連する問題