2014-12-21 74 views
1

我有一系列的矩形,我正嘗試向其中的一個添加紋理。這是我目前的代碼:無法將紋理添加到GL_QUAD

glEnable (GL_TEXTURE_2D); 

    QBitmap image; 
    GLuint texture; 

    float pixels[] = { 
      42, 0, 1, 0, 42, 1, 
     -42 , 0, 1, 0, -42, 1, 
    }; 

    image.load("texture.bmp"); 

    GLuint m_TextureID; 

    glGenTextures(1, &m_TextureID); 
    glBindTexture (GL_TEXTURE_2D, m_TextureID); 

    glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE , GL_MODULATE); 

    glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
    glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
    glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 84, 84, 0, GL_RGB, GL_FLOAT, pixels); 

    glEnable(GL_TEXTURE_2D); 
    glBindTexture (GL_TEXTURE_2D, m_TextureID); 

    glBegin(GL_QUADS); 

    glBegin(GL_QUADS); 
    glVertex3f(42, 0, 42); 
    glVertex3f(42, 0, -42); 
    glVertex3f(-42, 0, -42); 
    glVertex3f(-42, 0, 42); 
    glEnd(); 

我在哪裏出錯了?

回答

1

您打電話給glTexImage2D的地方是哪裏?變量image中的數據不會「神奇地」跳入OpenGL紋理。哦,你不應該在每次重繪時重新加載圖像/紋理。

+2

此外,您提供GL_LINEAR_MIPMAP_NEAREST作爲過濾器,但您永遠不會生成mipmap。這總是會導致黑色。 – BDL

+0

感謝大家,我稍微改變了代碼並調用了glTexImage2D,但它仍然沒有改變紋理。我認爲這是因爲我得到了glTexImage2D的參數錯誤? – hunterge

+0

@BDL:不完整的mipmap級別實際上會產生白色,但是,您不會看到紋理。 – datenwolf