// RainBow.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include "math.h"
#include "gl/glut.h"
void init()
{
glClearColor(0.8, 0.8, 0.8, 0); // 把清理窗口使用的颜色设置成黑色
glMatrixMode(GL_PROJECTION); //令当前矩阵为投影矩阵
glLoadIdentity(); //将当前矩阵设置为单位矩阵
gluOrtho2D(-1.5, 1.5, -1.0, 1.0); //设置正交投影的窗口大小
glMatrixMode(GL_MODELVIEW); //令当前矩阵为模型视图矩阵
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT); // 清除帧缓存
glLineWidth(5.0); //设置线宽为5
glEnable(GL_BLEND); //在画线的过程中启用反走样
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
glEnable(GL_LINE_SMOOTH);
int n = 540;
for(int i= 18;i <= n-18; ++i)
{
double t = i*3.1415926/n;
double a = 1.0*sin(t);
glBegin(GL_LINE_STRIP);
glColor4f(1., 0., 0., a);
glVertex2f(1.0*cos(t), 1.0*sin(t)-0.7);
glColor4f(1., 1., 0., a);
glVertex2f(1.08*cos(t), 1.08*sin(t)-0.7);
glColor4f(0., 1., 0., a);
glVertex2f(1.16*cos(t), 1.16*sin(t)-0.7);
glColor4f(0., 1., 1., a);
glVertex2f(1.20*cos(t), 1.20*sin(t)-0.7);
glColor4f(0., 0., 1., a);
glVertex2f(1.32*cos(t), 1.32*sin(t)-0.7);
glColor4f(1., 0., 1., a);
glVertex2f(1.4*cos(t), 1.4*sin(t)-0.7);
glEnd();
}
glFlush(); // 强制进行三角形绘制
}
int main(int argc, char**argv)
{
glutInit(&argc, argv); // GLUT 初始化函数
glutInitWindowSize(960, 640); // 设置窗口大小 (width, height)
glutInitWindowPosition(400, 100); // 设置窗口位置, 从左上角开始
glutCreateWindow("RainBow"); // 创建绘制窗口
// 设置绘制回调函数,把一个绘制函数的指针传给系统,系统会在需要重绘的时候自动来调用你
提供的绘制函数
- 1
- 2
前往页