文章原创 转载请标明出处
---------------------------------------------------
画圆的函数中 RGB颜色值变化
几种效果展示
黑白色
void drawCircle(GLdouble radius, GLdouble divide)
{
for (int k = 0; k < divide; k++) { x = radius* cos((k / divide) * 2 * PI); y = radius* sin((k / divide) * 2 * PI); glColor3f((k/divide), (k / divide), (k / divide)); glVertex3d(x, y, 0.0); } }

翠绿色
1 void drawCircle(GLdouble radius, GLdouble divide)
2 { 3 4 for (int k = 0; k < divide; k++) 5 { 6 x = radius* cos((k / divide) * 2 * PI); 7 y = radius* sin((k / divide) * 2 * PI); 8 glColor3f((k / divide), 1.0, (k / divide)); 9 glVertex3d(x, y, 0.0); 10 } 11 }

紫色
glColor3f((k / divide), 0.0, (k / divide) );

完整程序代码如下
1 //Five edges polygon. 2 //As less code as possible. 3 4 #include "stdafx.h" 5 #include<gl/glut.h> 6 #include<stdlib.h> 7 #include<iostream> 8 #include<math.h> 9 10 const GLdouble PI = 3.1415926; 11 static GLdouble x, y; 12 using namespace std; 13 14 void drawCircle(GLdouble radius, GLdouble divide) 15 { 16 17 for (int k = 0; k < divide; k++) 18 { 19 x = radius* cos((k / divide) * 2 * PI); 20 y = radius* sin((k / divide) * 2 * PI); 21 glColor3f(0.5*(k / divide), (k / divide), (k / divide) ); 22 glVertex3d(x, y, 0.0); 23 } 24 } 25 26 void init(void) 27 { 28 glClearColor(0.0, 0.0, 0.0, 0.0); 29 } 30 31 void display(void) 32 { 33 glClear(GL_COLOR_BUFFER_BIT); 34 35 36 glBegin(GL_POLYGON); 37 38 drawCircle(0.8, 100); 39 40 glEnd(); 41 glFlush(); 42 43 } 44 45 46 int main(int argc, char** argv) 47 { 48 glutInit(&argc, argv); 49 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 50 glutInitWindowPosition(500, 300); 51 glutInitWindowSize(500, 500); 52 glutCreateWindow("DrawGeometry"); 53 init(); 54 glutDisplayFunc(display); 55 glutMainLoop(); 56 return 0; 57 }

