in GomokuClient/GomokuClient/GUIController.cpp [158:232]
void GUIController::OnRenderBoard()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glColor3f(0.4f, 0.3f, 0.2f);
glBegin(GL_POLYGON);
glVertex2f(GRID_GAP / 4, GRID_GAP / 4);
glVertex2f(WINDOW_SIZE_W - GRID_GAP / 4, GRID_GAP / 4);
glVertex2f(WINDOW_SIZE_W - GRID_GAP / 4, WINDOW_SIZE_H - GRID_GAP / 4);
glVertex2f(GRID_GAP / 4, WINDOW_SIZE_H - GRID_GAP / 4);
glEnd();
glColor3f(0, 0, 0);
glLineWidth(3);
glBegin(GL_LINE_LOOP);
glVertex2f(GRID_GAP, GRID_GAP);
glVertex2f(WINDOW_SIZE_W - GRID_GAP, GRID_GAP);
glVertex2f(WINDOW_SIZE_W - GRID_GAP, WINDOW_SIZE_H - GRID_GAP);
glVertex2f(GRID_GAP, WINDOW_SIZE_H - GRID_GAP);
glEnd();
for (int x = 0; x <= WINDOW_SIZE_W; x += GRID_GAP)
{
glBegin(GL_LINES);
glVertex2f(x + GRID_GAP, GRID_GAP);
glVertex2f(x + GRID_GAP, WINDOW_SIZE_H - GRID_GAP);
glEnd();
}
for (int y = 0; y <= WINDOW_SIZE_H; y += GRID_GAP)
{
glBegin(GL_LINES);
glVertex2f(GRID_GAP, y + GRID_GAP);
glVertex2f(WINDOW_SIZE_W - GRID_GAP, y + GRID_GAP);
glEnd();
}
for (int x = 1; x <= BOARD_SIZE; ++x)
{
for (int y = 1; y <= BOARD_SIZE; ++y)
{
if (mViewMatrix[x][y] == StoneType::STONE_NONE)
continue;
if (mViewMatrix[x][y] == StoneType::STONE_BLACK)
glColor3f(0, 0, 0);
else
glColor3f(1, 1, 1);
glPushMatrix();
glBegin(GL_TRIANGLE_FAN);
for (int i = 0; i < 360; i++)
{
const float DEG2RAD = 3.14159f / 180;
float degInRad = i*DEG2RAD;
glVertex2f(cos(degInRad)*STONE_RADIUS + (x * GRID_GAP), sin(degInRad)*STONE_RADIUS + (y * GRID_GAP));
}
glEnd();
glPopMatrix();
}
}
/// draw a textline
glColor3f(1, 1, 0);
glRasterPos2f(GRID_GAP / 3, GRID_GAP / 3);
for (int i = 0; i < strlen(mTextLine); ++i)
{
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, mTextLine[i]);
}
glutSwapBuffers();
}