void ViewerAR::DrawPlane(int ndivs, float ndivsize) { // Plane parallel to x-z at origin with normal -y const float minx = -ndivs * ndivsize; const float minz = -ndivs * ndivsize; const float maxx = ndivs * ndivsize; const float maxz = ndivs * ndivsize; glLineWidth(2); glColor3f(0.7f, 0.7f, 1.0f); glBegin(GL_LINES); for (int n = 0; n <= 2 * ndivs; n++) { glVertex3f(minx + ndivsize * n, 0, minz); glVertex3f(minx + ndivsize * n, 0, maxz); glVertex3f(minx, 0, minz + ndivsize * n); glVertex3f(maxx, 0, minz + ndivsize * n); } glEnd(); }
时间: 2024-04-10 22:30:24 浏览: 112
这段代码是一个函数 `DrawPlane`,用于绘制一个平面。该平面是平行于 x-z 平面的,位于原点,法线方向为 -y。
函数的参数是 `ndivs` 和 `ndivsize`,分别表示平面的划分数和每个小划分的大小。
代码首先计算了平面的四个顶点的坐标,分别是 (`minx`, 0, `minz`)、(`minx`, 0, `maxz`)、(`maxx`, 0, `minz`)、(`maxx`, 0, `maxz`)。
接下来使用 OpenGL 的函数设置了线条的宽度和颜色。
然后通过使用 `glBegin(GL_LINES)` 和 `glEnd()` 函数来开始和结束绘制线段的过程。
在循环中,通过使用 `glVertex3f` 函数来定义每个线段的两个端点的坐标。循环中会绘制平行于 x 轴和 z 轴的线段,使得整个平面被划分为多个小的正方形。
最后,绘制完成后,函数执行结束。
阅读全文