2017-01-25 5 views
-1

私はチェスボードを持っている。 OpenGLの色が点灯していない。

int color = (x + z) % 2; 
glColor3b(color, color, color); // also tried 3f 

glPushMatrix(); { 
    glTranslatef(x, 0, z); 
    glBegin(GL_POLYGON); { 
     glVertex3f(0, 0.01, 0); 
     glVertex3f(0, 0.01, 1); 
     glVertex3f(1, 0.01, 1); 
     glVertex3f(1, 0.01, 0); 
    } glEnd(); 
} glPopMatrix(); 

そして実際、サイズ8×8の画面に表示される大きな広場は、そこにある:このコードを使用して

for(int i = 0; i < 8; i++) 
    for (int j = 0; j < 8; j++) { 
     drawSquare(i, j); 
     int type = board[i][j]; 
     if (type != 0) 
      drawPiece(i, j, type); 
    } 

塗料64個の正方形を、: を行います。しかし、画像は、すべての正方形が同じ色であることを示しています。これは、colorと印刷されているので、同じではありません。ここで

は、それがどのように見えるかです:(なぜなら、その-大きくないAAの、あなたは各エッジの正方形の境界線を見ると8があることを検証することができます)

enter image description here

私が使用している照明は次のとおりです。

+0

どの照明ですか?あなたのコードにはないものがあります。 – BDL

+0

@BDLは照明コードを追加しました – Amit

+3

私は物質の定義を見ません、私は明るい色の定義を参照してください、私は法線を参照してください。あなたはここであなたが探しているものをどのように得ることを期待していますか?また、2017年です...最新のOpenGLを学んでください。あなたは前世紀のパラダイムを使っています。 – thokra

答えて

0

照明を使用したOpenGLでは、設定する必要があり、現在の色に依存しません。

は交換してください:

glColor3b(color, color, color); 

付:(たとえば)

GLfloat c[] = { color, color, color, 1 }; 
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); 

感謝を正しい方向に私を指摘誰上記の投稿のコメント欄に。

関連する問題