这是为网格中定义的每一行调用的代码.
gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIDentity();gl.glEnableClIEntState(GL10.GL_VERTEX_ARRAY);gl.glVertexPointer(3,GL10.GL_float,mVerticesBuffer);gl.glTranslatef(x,y,z);gl.glrotatef(rz,1);gl.glrotatef(rx,1,0);gl.glrotatef(ry,0);gl.glDrawArrays(GL10.GL_lines,2);gl.gldisableClIEntState(GL10.GL_VERTEX_ARRAY);
问题是我只看到一条水平线.所以我觉得有些不对劲.
这是定义行的代码:
line line;for (int i = 0; i <= 10; i++) { // horizontal lines line = new line(-50,50,1); // blue line line.z = (i * 100) - 50; lines.add(line); // draw perspective lines line = new line(-50,1); // blue line line.x = (i * 100) - 50; line.ry = 90; lines.add(line);}
对于lines集合中的每一行,我在onDrawFrame中调用绘图代码.
解决方法 原因是因为你只画了一行. glDrawArrays基本上从给定的数据中提取opengl原语.因此缓冲区mVerticesBuffer中的坐标由glDrawArrays绘制一次.做你想做的事的一个简单方法是:
>旋转/平移到起始位置
>使用glDrawArrays()绘制第一行;
>使用gl.glTranslatef(somenumber,0);
>再次使用glDrawArrays()调用;
>使用gl.glrotatef(90,0);围绕y轴旋转(或者以0为中心的轴)
>(也许在轴上转回以获得相同的起始位置)
>再次执行第2,第3和第4个要点.
一个更整洁,更有效的方法是使用推送和d出矩阵,但为了简单起见,如果你是opengl的新手,这应该有效.
总结以上是内存溢出为你收集整理的如何在OpenGL ES Android中绘制网格线?全部内容,希望文章能够帮你解决如何在OpenGL ES Android中绘制网格线?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)