glDrawElementsInstanced fps放在第一个原语上

时间:2015-05-26 20:10:52

标签: opengl 3d

我正在尝试沿x和z轴渲染多个立方体。由于有很多立方体,只有位置不同,我想我会使用glDrawElementsInstanced。并且它工作得很好,但是当引擎渲染第一个立方体(在原点)时,我有一个fps下降。 我认为它会在彼此的顶部绘制多个立方体,这可能导致在同一位置多次绘制相同的三角形,并且我尝试不使用gl_InstanceID == 0渲染第一个块,但无论如何它都在绘制它。

以下是我的问题的插图: 这里我有21个FPS:当我靠近第一个立方体时。

enter image description here

在这里,我有60 fps,因为我很远(当我喜欢远离原版的5个立方体时,我得到60 fps):

enter image description here

这是我的顶点着色器:

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;  
}

我正在使用索引正常绘制立方体,如果需要,我可以将代码放在这里。 谢谢。

我有解决方案,我稍后会发布

1 个答案:

答案 0 :(得分:0)

正如你自己说的那样,他似乎多次渲染立方体。意味着您在设置实例化数据时可能会出现问题。

尝试渲染更少的多维数据集或尝试跳过实例(请参阅下面的链接)以锁定问题。您还可以尝试手动输入一些实例化数据,以查看导致问题的原因。

在跳过某些实例的情况下渲染实例:glDrawElementsInstancedBaseVertexBaseInstance