只绘制了两种形状中的一种

时间:2013-07-12 09:19:14

标签: opengl drawing textures lwjgl shape

我正在尝试使用此代码绘制两个相似的矩形:

GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);

GL20.glUseProgram(pId);

GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texId);

GL30.glBindVertexArray(vaoId);
GL20.glEnableVertexAttribArray(0);
GL20.glEnableVertexAttribArray(1);
GL20.glEnableVertexAttribArray(2);

GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboiId);

GL11.glDrawElements(GL11.GL_TRIANGLES, indicesCount, GL11.GL_UNSIGNED_BYTE, 0);

GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
GL20.glDisableVertexAttribArray(2);
GL20.glDisableVertexAttribArray(1);
GL20.glDisableVertexAttribArray(0);
GL30.glBindVertexArray(0);

GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);

GL20.glUseProgram(0);

奇怪的是,只绘制了两个中的第二个,尽管它们具有完全相同的绘图代码。唯一的区别是,其中一个移位了一点。我测试了只绘制第一个并且它有效。那么第二个矩形会以某种方式覆盖第一个吗?

1 个答案:

答案 0 :(得分:2)

删除GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);它基本上清除了屏幕上的所有颜色,这意味着只有最后绘制的三角形可见。