多次生成一个插入的对象
Generate one inserted object multiple times
我正在尝试为我的游戏创建 5x5x5 立方体。现在,我有这段代码,它在相机视图中只显示一个立方体。显然,它只被"插入"一次。
void onIdle() override {
// Animate using time when activated
if (animationEnabled) time = (float) glfwGetTime();
// Set gray background
glClearColor(.5f, .5f, .5f, 0);
// Clear depth and color buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Create object matrices
auto cubeMat = rotate(mat4{}, time, {1.0f, 1.0f, 0.0f});
//auto cubeMat = mat4(1.0f);
auto sphereMat = rotate(mat4{}, (float)time, {0.5f, 1.0f, 0.0f});
cubeMat = scale(cubeMat, {0.2f, 0.2f, 0.2f});
// Camera position/rotation - for example, translate camera a bit backwards (positive value in Z axis), so we can see the objects
auto cameraMat = translate(mat4{}, {0, 0, -4.0f});
program.setUniform("ViewMatrix", cameraMat);
// Update camera position with perspective projection
program.setUniform("ProjectionMatrix", perspective((PI / 180.f) * 60.0f, 1.0f, 0.1f, 10.0f));
program.setUniform("LightDirection", normalize(vec3{1.0f, -1.0f, 1.0f}));
// Render objects
// Central box
program.setUniform("Texture", cubeTexture);
for (int i = 0; i < 5*5*5; ++i)
{
program.setUniform("ModelMatrix", cubeMat[i]);
cube.render();
}
}
};
如何生成 5x5x5 多维数据集,这样我就不必手动插入它们这么多次?此外,每次插入都应为每个立方体提供其特定位置,以创建一个充满 5x5x5 小立方体(如魔方)甚至更好的大型 3D 立方体,这是一个很好的例子。
您需要一个为单个立方体生成模型矩阵的函数:
mat4 CubeMat( int x, int y, int z )
{
mat4 cubeMat;
//cubeMat = rotate(cubeMat, time, {1.0f, 1.0f, 0.0f});
//cubeMat = scale(cubeMat, {0.2f, 0.2f, 0.2f});
cubeMat = translate(cubeMat, {1.5f*(float)x-4.0f, 1.5f*(float)y-4.0f, 1.5f*(float)z-4.0f});
return cubeMat;
}
您必须调用cube.render();
5*5*5 次,并且必须设置 5*5*5 个独立模型矩阵:
for (int x = 0; x < 5; ++x)
{
for (int y = 0; y < 5; ++y)
{
for (int z = 0; z < 5; ++z)
{
mat4 cubeMat = CubeMat(x, y, z);
program.setUniform("ModelMatrix", cubeMat);
cube.render();
}
}
}
相关文章:
- 预处理器:插入结构名称中的前一个行号
- 将一个向量插入另一个向量的某个位置
- 在一个类中插入另一个类的多重集
- 在C++的链表末尾插入一个节点
- 插入一个基本的单向链表节点似乎破坏了我的 c++ 代码?
- 如何在另一个字符串的x位置插入一个字符串?
- 如何仅使用其中一个维度在 2D 矢量中插入值?
- 如何从一个容器中获取某些元素并将其转换插入到另一个容器中?
- 如果我们不创建一个新节点并使用指针插入数据并建立链接(在链表中)怎么办?
- 在另一个字符串中插入文件扩展名之前的字符串
- 如何组合一个宽字符字符串,中间插入一些空字符
- win32 c++ 我想在静态标签的文本之后直接插入一个 EDIT 控件
- 创建一个函数以在给定位置将元素插入到列表中
- C++ 如何在 std::vector 中插入一个连续的间隔范围?
- C++将 X 向量数据插入到另一个向量
- 插入指针数组会删除上一个结果
- 将向量{x,y,z}插入另一个向量
- 将多个偏移量的多个元素插入到一个矢量中
- 多次生成一个插入的对象
- 用一个插入线程和一个读线程映射并发性