使用opengl 绘制镂空三角形

使用opengl绘制镂空三角形

绘制镂空三角形

代码实现:

#include
GLfloat v[3][2] = { {0.0,0.0}, {2.0,0.0}, {1.0, 1.7} }; int n;
void triangle(GLfloat *a, GLfloat *b, GLfloat *c)
{
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_TRIANGLES);
glVertex2fv(a);
glVertex2fv(b);
glVertex2fv©;
glEnd();
}
void multiTriangle(GLfloat *a, GLfloat *b, GLfloat *c, int m) {
GLfloat v0[2], v1[2], v2[2];
int j;
if (m > 0) {
for (j = 0; j < 2; j++) v0[j] = (a[j] + b[j]) / 2;
for (j = 0; j < 2; j++) v1[j] = (a[j] + c[j]) / 2;
for (j = 0; j < 2; j++) v2[j] = (b[j] + c[j]) / 2;
multiTriangle(a, v0, v1, m - 1);
multiTriangle(c, v1, v2, m - 1);
multiTriangle(b, v2, v0, m - 1);
}
else(triangle(a, b, c));
}
void mydisplay(void) {
glClear(GL_COLOR_BUFFER_BIT);
multiTriangle(v[0], v[1], v[2], n);
glFlush();
}
void init() {
glClearColor(1.0, 1.0, 1.0, 1.0);
glColor3f(0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2.0, 2.0, -2.0, 2.0, -1.0, 1.0);
}
void main(int argc, char **argv)
{
n = 5;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(50, 50);
glutCreateWindow(“镂空三角形”);
glutDisplayFunc(mydisplay);
init();
glutMainLoop();
}

运行结果:使用opengl 绘制镂空三角形_第1张图片

学习总结:

这个是用画线的方法来实现绘制图形,当然还有描点法绘制图形。

你可能感兴趣的:(大学在校生)