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个方块:
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();
事实上,屏幕上有一个大方块,大小为8x8。但是,图像显示所有正方形都是相同的颜色,它们不应该是我打印的color
,并且它确实交替为0/1。
以下是它的外观:(由于不那么棒的AA,你可以看到每个边缘方块的边界并验证有8个)
我正在使用的照明是:
static float g_lightPos[4] = { 10, 10, 100, 1 };
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_POSITION, g_lightPos);
答案 0 :(得分:0)
使用光照的OpenGL需要设置材质,而不依赖于当前颜色。
替换:
glColor3b(color, color, color);
使用:(例如)
GLfloat c[] = { color, color, color, 1 };
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c);
非常感谢上述帖子的评论者指出了我正确的方向。