我正在尝试沿x和z轴渲染多个立方体。由于有很多立方体,只有位置不同,我想我会使用glDrawElementsInstanced。并且它工作得很好,但是当引擎渲染第一个立方体(在原点)时,我有一个fps下降。
我认为它会在彼此的顶部绘制多个立方体,这可能导致在同一位置多次绘制相同的三角形,并且我尝试不使用gl_InstanceID == 0
渲染第一个块,但无论如何它都在绘制它。
以下是我的问题的插图: 这里我有21个FPS:当我靠近第一个立方体时。
在这里,我有60 fps,因为我很远(当我喜欢远离原版的5个立方体时,我得到60 fps):
这是我的顶点着色器:
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 offset;
void main(void){
vec4 pos = u_transform * vec4(position, 1);
pos += vec4(offset.x, 0, offset.z, 0);
gl_Position = u_projectionMatrix * u_viewMatrix * pos;
}
我正在使用索引正常绘制立方体,如果需要,我可以将代码放在这里。 谢谢。
我有解决方案,我稍后会发布
答案 0 :(得分:0)
正如你自己说的那样,他似乎多次渲染立方体。意味着您在设置实例化数据时可能会出现问题。
尝试渲染更少的多维数据集或尝试跳过实例(请参阅下面的链接)以锁定问题。您还可以尝试手动输入一些实例化数据,以查看导致问题的原因。
在跳过某些实例的情况下渲染实例:glDrawElementsInstancedBaseVertexBaseInstance