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