我将尝试在当前的“OnDrawFrame”中绘制一组对象。
@Override
public void onDrawFrame(GL10 gl) {
for(int i=0; i<objectArray.length; i++){
objectArray[i].draw(gl);
}
}
当我尝试使用如上所述的'for'语句时,内存的浪费似乎太可怕了。
即使您在实践中喜欢它,它也会继续删除,绘图对象将显示在最后。
通过做什么,数组中的对象全部还是会绘制出来?
另外,我需要做什么才能有效利用内存
白天到晚上被什么漏电烦恼。
画线类.......
public class LINETEST {
float[] vertices = null;
private short[] indices = null;
public FloatBuffer verticesBuffer;
private ShortBuffer indexBuffer;
public LINETEST() {
}
public void draw(GL10 gl) {
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, verticesBuffer);
gl.glLineWidth(2);
gl.glColor4f(0f, 0f, 0f, 0f);
gl.glDrawElements(GL10.GL_LINE_STRIP, indices.length,
GL10.GL_UNSIGNED_SHORT, indexBuffer);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
public void setBuffer() {
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
verticesBuffer = vbb.asFloatBuffer();
verticesBuffer.put(vertices);
verticesBuffer.position(0);
ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * 2);
ibb.order(ByteOrder.nativeOrder());
indexBuffer = ibb.asShortBuffer();
indexBuffer.put(indices);
indexBuffer.position(0);
}
public void setVertices(float[] verticesAl, short[] indicesAl){
this.vertices = verticesAl;
this.indices = indicesAl;
}
}
上面的类对象数组的函数。
public void setVertices(float[] vertice, short[] indice, int lineNumber){
this.vertices = vertice;
this.indices = indice;
this.number = lineNumber;
linetest[number] = new LINETEST();
linetest[number].setVertices(vertices, indices);
linetest[number].setBuffer();
}
最后就是使用上面的函数绘制的OnDraw方法了。它在渲染器类中运行。
@Override
public void onDrawFrame(GL10 gl) {
int OBJL = 30;
switch (OBJL){
case 30:
if(vertices != null){
if(linetest[number] != null){
for(int i = 0; i<number; i++){
linetest[number].draw(gl);
}
linetest[number].draw(gl);
}
}else{
break;
}
}
}