gpt4 book ai didi

c++ - 如何在 OpenGL 中高效地显示数千个具有动态颜色的相同网格?

转载 作者:行者123 更新时间:2023-11-28 00:13:13 25 4
gpt4 key购买 nike

我有一个简单的网格。一个立方体。它的透明度为 50%。

我需要显示数千个,但每一个的颜色和透明度在每一帧都会改变。整个立方体都会改变颜色,而不仅仅是一组面。网格保持不变,立方体位置的变化非常小(但有一些)。

到目前为止,我所看到的是“实例化”,但我只在静态项目中看到过。

如何在 OpenGL 中显示数千个变色立方体?

最佳答案

实例化是一种潜在的解决方案。

您所做的不是仅将位置设为实例变量,而是将颜色设为实例变量。

一个 VBO 拥有完整的立方体网格。

另一个有一个序列InstanceData {vec3 position, vec3 color}

您将属性指定为:

glBindBuffer(GL_ARRAY_BUFFER, instanceBuffer);
glVertexAttribPointer(cubePosLoc, 3, GL_FLOAT, GL_FALSE, sizeof(InstanceData), (void*)offsetof(position, InstanceData));

glVertexAttribPointer(cubeColorLoc, 3, GL_FLOAT, GL_FALSE, sizeof(InstanceData), (void*)offsetof(color, InstanceData));

并为 cubePosLoccubeColorLoc 设置 AttributeDivisor

然后在顶点着色器中将这些视为普通属性。 (将 Cubeposition 添加到顶点的位置并将颜色传递给片段着色器)

在每一帧之间,您使用新的位置和颜色更新 instanceBuffer

关于c++ - 如何在 OpenGL 中高效地显示数千个具有动态颜色的相同网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com