【发布时间】:2015-05-27 05:51:41
【问题描述】:
我正在尝试沿 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;
}
我通常用索引绘制立方体,如果你愿意,我可以把代码放在这里。 谢谢。
我有解决办法,我稍后再贴出来
【问题讨论】: