我在android上使用opengl绘制一个简单的矩形时遇到了问题。 这就是我所做的。
我画了一个带草图的简单矩形。我使用导出结果 一个3d模型collada .dae文件。然后我复制了顶点数据 .dae(xml)文件并放入一个数组。我用本机复制了数组 格式化为浮动缓冲区。然后我用条纹绘制了三角形 模式。结果几乎是一个矩形。缺少一个三角形 每个表面。
以下是代码的相关部分和结果。
public void draw(GL10 gl) {
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
// Enable color tracking
gl.glEnable(GL10.GL_COLOR_MATERIAL);
for (int i=0; i<108/4; i=i+4) {
myDrawColor(gl,i);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,i,4);// mode, first, count
}
}
结果如下所示 http://imgur.com/a/o3HTP
答案 0 :(得分:1)
您可能在顶点列表中的顶点顺序错误(这可能是导出的错误)。这是我从四边形中得到的,当我将顶点放在错误的位置时。您将需要从外部逆时针构建它们。也可能是三角形条带导致顶点出现问题,对于一个应用程序,您可以尝试使用GL_QUADS。
答案 1 :(得分:0)
我让代码正常工作。有三个问题。
以下是生成的代码。问题是我的。不是草图生成的.xml文件。
public void draw(GL10 gl) {
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorsBuffer);
gl.glEnable(GL10.GL_COLOR_MATERIAL);
// Enable color tracking
gl.glEnable(GL10.GL_COLOR_MATERIAL);
gl.glDrawElements(GL10.GL_TRIANGLES, myoffsets.length, GL10.GL_UNSIGNED_SHORT, mIndicesBuffer); // mode, count, type, indices
}