計算機圖形學快結課了,這裡整理一下我學習的時候的代碼。
void init(void) {
//背景設定為白色
glClearColor(1.0, 1.0, 1.0, 0.0);
//正投影
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-200.0, 200.0, -150.0, 150.0);
}
void myDisplay(void)
{
//顯示視窗
glClear(GL_COLOR_BUFFER_BIT);
//設定顔色
glColor3f(1.0, 0.5, 0.4);
//設定線的粗細
glLineWidth(4.0f);
#pragma region 折線
//畫折線
glBegin(GL_LINE_STRIP);
glVertex2i(-20, -20);
glVertex2i(-82, -82);
glVertex2i(-92, -75);
glVertex2i(-30, -15);
glEnd();
#pragma endregion
#pragma region 同心圓
//畫同心圓
float pi = 3.1415926536;
int i = 0;
int n = 1000;
glBegin(GL_POLYGON);//圓1
for (i = 0; i < n; i++)
{
glVertex2f(50 * cos(2 * pi * i / n), 50 * sin(2 * pi * i / n));
}
glEnd();
glBegin(GL_POLYGON);//圓2
glColor3f(1.0, 1.0, 1.0);
for (i = 0; i < n; i++)
{
glVertex2f(40 * cos(2 * pi * i / n), 40 * sin(2 * pi * i / n));
}
glEnd();
glBegin(GL_POLYGON);//圓3
glColor3f(1.0, 0.5, 0.4);
for (i = 0; i < n; i++)
{
glVertex2f(30 * cos(2 * pi * i / n), 30 * sin(2 * pi * i / n));
}
glEnd();
glBegin(GL_POLYGON);//圓4
glColor3f(1.0, 1.0, 1.0);
for (i = 0; i < n; i++)
{
glVertex2f(20 * cos(2 * pi * i / n), 20 * sin(2 * pi * i / n));
}
glEnd();
glBegin(GL_POLYGON);//圓5
glColor3f(1.0, 0.5, 0.4);
for (i = 0; i < n; i++)
{
glVertex2f(10 * cos(2 * pi * i / n), 10 * sin(2 * pi * i / n));
}
glEnd();
#pragma endregion
//保證前面的OpenGL指令立即執行(而不是讓它們在緩沖區中等待)
glFlush();
}
//帶指令行參數的main函數
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("OpenGL畫一個棒棒糖程式");
init();
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP3hleWdVZsx2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0YTOzUzN1gDMzADNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)