opengl绘制多个随机颜色的三角形
时间: 2023-10-07 14:06:20 浏览: 164
以下是使用OpenGL绘制多个随机颜色的三角形的示例代码:
```c++
#include <GL/glut.h>
#include <cstdlib>
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
for(int i=0; i<10; i++)
{
// 随机生成三角形的颜色
float r = (float)rand() / RAND_MAX;
float g = (float)rand() / RAND_MAX;
float b = (float)rand() / RAND_MAX;
glColor3f(r, g, b);
// 随机生成三角形的三个顶点坐标
float x1 = (float)rand() / RAND_MAX * 2 - 1;
float y1 = (float)rand() / RAND_MAX * 2 - 1;
float x2 = (float)rand() / RAND_MAX * 2 - 1;
float y2 = (float)rand() / RAND_MAX * 2 - 1;
float x3 = (float)rand() / RAND_MAX * 2 - 1;
float y3 = (float)rand() / RAND_MAX * 2 - 1;
glVertex2f(x1, y1);
glVertex2f(x2, y2);
glVertex2f(x3, y3);
}
glEnd();
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutCreateWindow("Random Triangles");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
```
在这个示例代码中,我们使用了OpenGL的`glBegin`和`glEnd`函数来定义一个绘制图形的块,并在其中使用`glVertex2f`函数来指定三角形的三个顶点的坐标。在每个三角形绘制之前,我们先使用`glColor3f`函数随机生成一个颜色来为三角形着色。这里我们使用了`rand`函数来生成随机数,然后将其归一化到[0, 1]范围内,最后将其用作三角形的颜色值。由于`rand`函数生成的随机数的范围是[0, RAND_MAX],我们需要使用`RAND_MAX`来将随机数归一化。
在`main`函数中,我们使用`glutCreateWindow`函数创建了一个窗口,并将`display`函数注册为窗口的绘制回调函数。然后,我们进入了GLUT的主循环,等待用户的事件和命令。在这个示例程序中,我们不需要处理任何用户事件,因此我们只需要在主循环中等待即可。在每次迭代中,GLUT将调用`display`函数来绘制窗口。在这个函数中,我们使用OpenGL来绘制图形,并使用`glFlush`函数将图形输出到屏幕上。
运行这个程序,你将看到一个窗口中绘制了10个随机颜色的三角形。每次运行程序时,这些三角形的颜色和位置都将是随机的。