如何绘制3d板?过剩
How to draw board 3d? GLUT
我知道如何画矩形,但我想画板。它将成为我想要创建迷宫的地图的一部分。它应该是 3D 的。所以我需要创建简单的板。我知道我需要使用多边形创建它。有人可以帮忙吗?
glColor3f( 1.0, 0.0, 0.0 ); glVertex3f( 0.5, -0.5, -0.5 ); // P1 is red
glColor3f( 0.0, 1.0, 0.0 ); glVertex3f( 0.5, 0.5, -0.5 ); // P2 is green
glColor3f( 0.0, 0.0, 1.0 ); glVertex3f( -0.5, 0.5, -0.5 ); // P3 is blue
glColor3f( 1.0, 0.0, 1.0 ); glVertex3f( -0.5, -0.5, -0.5 ); // P4 is purple
glEnd();
// White side - BACK
glBegin(GL_POLYGON);
glColor3f( 1.0, 1.0, 1.0 );
glVertex3f( 0.5, -0.5, 0.5 );
glVertex3f( 0.5, 0.5, 0.5 );
glVertex3f( -0.5, 0.5, 0.5 );
glVertex3f( -0.5, -0.5, 0.5 );
glEnd();
// Purple side - RIGHT
glBegin(GL_POLYGON);
glColor3f( 1.0, 0.0, 1.0 );
glVertex3f( 0.5, -0.5, -0.5 );
glVertex3f( 0.5, 0.5, -0.5 );
glVertex3f( 0.5, 0.5, 0.5 );
glVertex3f( 0.5, -0.5, 0.5 );
glEnd();
// Green side - LEFT
glBegin(GL_POLYGON);
glColor3f( 0.0, 1.0, 0.0 );
glVertex3f( -0.5, -0.5, 0.5 );
glVertex3f( -0.5, 0.5, 0.5 );
glVertex3f( -0.5, 0.5, -0.5 );
glVertex3f( -0.5, -0.5, -0.5 );
glEnd();
// Blue side - TOP
glBegin(GL_POLYGON);
glColor3f( 0.0, 0.0, 1.0 );
glVertex3f( 0.5, 0.5, 0.5 );
glVertex3f( 0.5, 0.5, -0.5 );
glVertex3f( -0.5, 0.5, -0.5 );
glVertex3f( -0.5, 0.5, 0.5 );
glEnd();
// Red side - BOTTOM
glBegin(GL_POLYGON);
glColor3f( 1.0, 0.0, 0.0 );
glVertex3f( 0.5, -0.5, -0.5 );
glVertex3f( 0.5, -0.5, 0.5 );
glVertex3f( -0.5, -0.5, 0.5 );
glVertex3f( -0.5, -0.5, -0.5 );
glEnd();
它将绘制一个简单的立方体,但我需要将其转换为板。我该怎么做?
为了使立方体看起来像您描述的板(或地板),您有两个主要选项。
第一种只是更改多边形的坐标。目前,您的立方体在每个轴上从 -0.5 运行到 0.5。您可以将坐标更改为在 X 和 Z 上从 -5.0f 到 5.0f,在 Y 上从 -10.0f 更改为 -9.0f。
如果您不确定如何执行此操作,则涉及更改glVertex3f()
呼叫中的号码。参数按以下顺序排列:X、Y、Z。
第二个选项是使用矩阵转换。平移可以将立方体向下移动到地板上,刻度可以将其横向拉伸:
glPushMatrix();
glTranslatef(0.0f, -9.5f, 0.0f); // move downwards
glScalef(10.0f, 1.0f, 10.0f); // stretch on X and Z
// insert your cube drawing code here
glPopMatrix();
推送/弹出调用用于防止矩阵转换影响其他图形,或防止每次执行绘图代码时累积。
相关文章:
- 无法将结构注册为增强几何体3D点
- OpenGL大的3D纹理(>2GB)非常慢
- 是什么导致了Unity 3D中的"错误线程异常"?
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 如何从 3D 曲面网格中删除自相交三角形?
- CUDA 使用共享内存平铺 3D 卷积实现
- 检查框内的 3D 点
- 如何在 3D OpenGL 场景上绘制 SDL 2D 矩形?
- Frank Luna 在他的书"使用 DirectX12 进行 3D 游戏编程"的介绍中盒子示例的问题
- 使用 C++在 OpenGL 中对 3D 多边形进行纹理处理
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 是否可以使用 DirectX 3D 11 绘制由三角形组成的圆?
- 如何使用条件计算 3D 网格中从一个点到另一个点的所有路径
- 在 OpenGL 中使用键盘移动 3D 形状,C++
- 检测到堆栈粉碎,中止,OpenGl 自由过剩
- 是否可以制作没有内部分割的cgal 3d多多马因网格?
- 我想通过OpenGL创建3D金字塔
- 如何绘制3d板?过剩