-2

所以基本上我正在创建一个 2D 游戏。我正在使用 VBO 和 GLSL 着色器。现在我要做的是,我加载的每个纹理,我为它创建一个 VBO,所以每个使用该纹理的可绘制对象它的元素都将插入到该 VBO 中。所以前段时间我试图通过创建很多小盒子并将它们彼此相邻放置来创建一个类似网格的对象。它们都在同一个 VBO 中,因为它们都具有相同的纹理来创建类似网格的对象。一旦他们超过 10 个左右,他们就开始有奇怪的文物。

所以我通过创建一个大的可绘制对象并在其上多次重复纹理来绕过这一点。文物不见了。现在我开始进行文本映射(每个字母都是一个实例,但它们共享相同的纹理、文本映射),我注意到当我超过 6 个字母时开始出现伪影。我不知道为什么会发生这种情况,我什至没有线索。

所以我想知道是否有人知道可能导致这个问题的原因..

注意:我还注意到,在我的照明系统(相同的纹理但不同的 RGB 值)中,如果我将两盏灯彼此靠得太近,它们会在像 3 一样开始后相交。这可能是原因,因为文本实际上由于填充而相交。我怎样才能修复相交的 2 个纹理并使用导致伪影的相同纹理?

编辑:^^^ 没关系,我删除了填充并且工件仍然存在..

4

1 回答 1

0

解决了。问题是在 glDrawElements 的第二个参数中,我传入的数字大于我拥有的实际索引数量,因此 OpenGL 试图渲染额外的三角形。

于 2013-08-21T16:51:49.773 回答