OpenGL基础(一)2. 画多边形之颜色渐变的圆 月食效果


文章原创 转载请标明出处
---------------------------------------------------
画圆的函数中 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 }
View Code


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM