2016-11-06 5 views
0

OpenGLで画像を開いて表示すると、画面上のすべての色が突然黒に変わり、もう別の色を使用することができなくなります。画像を表示すると、もう色を使うことができませんopenGL

それは、画面上

void drawButton(int x1,int y1,int x2,int y2,int r,int g,int b) 
{ 
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 
    glColor3f(r,g,b); 
    glBegin(GL_QUADS); 
    glVertex2f(x1,y1); 
    glVertex2f(x2,y1); 
    glVertex2f(x2,y2); 
    glVertex2f(x1,y2); 
    glEnd(); 
    glFlush(); 
    glutSwapBuffers(); 
} 

私のカラフルなボタンだと、ここで表示画像機能が

void display_image(char* file_name) 
{ 
    GLuint texture_id=loadIm(file_name); 
glClear(GL_COLOR_BUFFER_BIT); 
glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, texture_id); 
glLoadIdentity(); 
glColor3f(1, 1, 1); 
glFrontFace(GL_CCW); 
glCullFace(GL_FRONT); 
glBindTexture(GL_TEXTURE_2D, texture_id); 
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); 
glBegin(GL_QUADS); 
glTexCoord2f(0,1); glVertex2f(0, 0.0); 
glTexCoord2f(0,0); glVertex2f(0, wh); 
glTexCoord2f(1,0); glVertex2f(ww,wh); 
glTexCoord2f(1,1); glVertex2f(ww, 0.0); 
glEnd(); 
glFlush(); 
glutSwapBuffers(); 
drawArea(); 

} 

だEDIT:またはglDisable(GL_TEXTURE_2D)

+1

未フォーマットオブジェクトを描画する前に 'GL_TEXTURE_2D'を無効にしますか? – BDL

答えて

0

OpenGLは、ステートマシンです。これは、GL_TEXTURE_2Dがテクスチャで描くことができるときには、これを後で無効にして色のみでレンダリングする必要があることを意味します。色付きポリゴンのレンダリングを開始する前にglDisable(GL_TEXTURE_2D);を呼び出すと、問題が解決されます。

関連する問題