完成下面的实验要求1.背景色为黑色,用 glClearColor()来完成; 2、选用 GL_POINTS 作为图形类型; 3、绘制生成四个坐标、颜色和尺寸均不相同的点。
时间: 2024-10-24 15:05:14 浏览: 14
-计算机图形学实验报告.pdf
5星 · 资源好评率100%
要在OpenGL中实现这个实验,首先你需要设置好渲染环境的背景色为黑色。这是通过`glClearColor()`函数来完成的,它接受一个4维的颜色向量,表示红、绿、蓝、 alpha (透明度)值。例如,如果你想要一个完全不透明的黑色背景,你可以这样做:
```c++
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // 黑色背景
glClear(GL_COLOR_BUFFER_BIT); // 渲染前清空颜色缓冲区
```
接下来,你需要将图形类型设为GL_POINTS,这会告诉OpenGL你将绘制的是单个点而不是线或面:
```c++
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); // 设置投影矩阵为单位矩阵
gluOrtho2D(-1.0, 1.0, -1.0, 1.0); // 设置正交投影,适合绘制像素大小的点
glPointSize(5); // 设置点的大小,这里可以调整为你需要的任意尺寸
glMatrixMode(GL_MODELVIEW); // 转换到模型视图矩阵
glLoadIdentity(); // 重置模型视图矩阵
```
为了绘制四个坐标、颜色和尺寸都不相同的点,你可以创建一个数组存储这些信息,然后遍历数组进行绘制。这里是一个简单的示例,假设我们有四个点,它们分别是红色、蓝色、绿色和黄色:
```c++
float points[] = {
{0.0f, 0.0f, GL红色, 5.0f}, // 点1
{0.75f, 0.75f, GL蓝色, 8.0f}, // 点2
{-0.75f, -0.75f, GL绿色, 3.0f}, // 点3
{0.5f, -0.5f, GL黄色, 10.0f} // 点4
};
int numPoints = sizeof(points) / sizeof(points[0]);
for (int i = 0; i < numPoints; i++) {
glColor3fv(points[i].color); // 设置当前颜色
glVertex2fv(points[i].position); // 绘制点
glutSolidPoint(points[i].size); // 使用指定大小绘制点
}
```
记得在实验完成后别忘了结束OpenGL上下文和其他必要的清理操作。
阅读全文