#include "gl/glut.h"
#include
hằng số
GLfloat PI = 3,1415926f;
vô hiệu
DrawStar(GLfloat px, GLfloat py, GLfloat vx, GLfloat vy,
số nguyên
lá cờ)
{
glBegin(GL_TRIANGLE_FAN);
GLfloat vtx[12], vty[12];
vtx[0] = px;
vty[0] = py;
vtx[1] = vx;
vty[1] = bạn;
Chiều dài GLfloat1 =
vuông
((px - vx)*(px - vx) + (py - vy)*(py - vy));
Chiều dài GLfloat2 = chiều dài1*
tội lỗi
(0,1*PI) /
tội lỗi
(126.0 / 180 * PI);
gấp đôi
nhiệt =
vì mục đích
((vty[1] - vty[0]) / (vtx[1] - vtx[0]));
nếu như
(lá cờ)
init = init - PI;
vì
(
số nguyên
tôi = 2; tôi < 12; tôi++) {
init = init - 0,2*PI;
nếu như
(tôi % 2 == 0) {
vtx[i] = chiều dài2*
cos
(init) + vtx[0];
vty[i] = chiều dài2*
tội lỗi
(khởi tạo) + vty[0];
}
khác
{
vtx[i] = chiều dài1*
cos
(init) + vtx[0];
vty[i] = chiều dài1*
tội lỗi
(khởi tạo) + vty[0];
}
}
vì
(
số nguyên
tôi = 0; tôi < 12; tôi++)
glVertex3f(vtx[i], vty[i], 0,5);
glEnd();
}
vô hiệu
trưng bày()
{
glXóa(GL_COLOR_BUFFER_BIT);
glColor3f(1, 0, 0);
glBegin(GL_QUADS);
glVertex3f(-0,75, 0,5, 0,5);
glVertex3f(0,75, 0,5, 0,5);
glVertex3f(0,75, -0,5, 0,5);
glVertex3f(-0,75, -0,5, 0,5);
glEnd();
glColor3f(1.0, 1.0, 0.0);
GLfloat px[5] = { -1,5 / 3,-0,75 / 3,-0,75 / 5,-0,75 / 5,-0,75 / 3 };
GLfloat py[5] = { 0,25,0,4,0,3,0,15,0,05 };
GLfloat vx[5] = { -1,5 / 3 };
GLfloat vy[5] = {0,4};
vì
(
số nguyên
tôi = 1; tôi < 5; tôi++) {
vx[i] = px[i]-0,05*
cos
(
vì mục đích
((py[0] - py[i]) / (px[0] - px[i])));
vy[i] = py[i]-0,05*
tội lỗi
(
vì mục đích
((py[0] - py[i]) / (px[0] - px[i])));
}
DrawStar(px[0], py[0], vx[0], vy[0], 0);
DrawStar(px[1], py[1], vx[1], vy[1], 1);
DrawStar(px[2], py[2], vx[2], vy[2], 1);
DrawStar(px[3], py[3], vx[3], vy[3], 1);
DrawStar(px[4], py[4], vx[4], vy[4], 1);
trao đổi bộ đệm
}
vô hiệu
thay đổiKích thước(GLsizei w, GLsizei h)
{
nếu như
(h == 0)
h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
Tải xuống
số nguyên
dis = w < h ? w : h;
glViewport(0, 0, dis, dis);
glTrực tiếp(-1,5, 1,5, -1,5, 1,5, -1,5, 1,5);
nếu như
(w <= chiều cao)
glOrtho(-1.0, 1.0, 1.0,1.0* h / w, 1.0, -1.0);
khác
glOrtho(-1.0, 1.0 * w / h, 1.0, 1.0, 1.0, -1.0);
glMatrixMode(GL_MODELVIEW);
Tải xuống
}
số nguyên
chủ yếu (
số nguyên
đối số,
char
*argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
glutInitWindowPosition(10, 10);
glutInitWindowSize(400,400);
glutCreateWindow(
"Ứng dụng GLUT đơn giản"
);
glOrtho(1.0, 1.0, 1.0, 1.0, 1.0, -1.0);
glutReshapeFunc(thay đổi kích thước);
glXóa(GL_COLOR_BUFFER_BIT);
glutDisplayFunc(hiển thị);
glutMainLoop();
trở lại
0;
}
Tôi là một lập trình viên xuất sắc, rất giỏi!