From 41cd6c47b23975098cd155517790e018670785e7 Mon Sep 17 00:00:00 2001 From: Kenneth Russel Date: Mon, 15 Jun 2009 23:12:27 +0000 Subject: Copied JOGL_2_SANDBOX r350 on to trunk; JOGL_2_SANDBOX branch is now closed git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/trunk@352 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4 --- src/demos/es2/perftst/PerfVBOLoad.java | 239 +++++++++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100755 src/demos/es2/perftst/PerfVBOLoad.java (limited to 'src/demos/es2/perftst/PerfVBOLoad.java') diff --git a/src/demos/es2/perftst/PerfVBOLoad.java b/src/demos/es2/perftst/PerfVBOLoad.java new file mode 100755 index 0000000..376ab0a --- /dev/null +++ b/src/demos/es2/perftst/PerfVBOLoad.java @@ -0,0 +1,239 @@ +package demos.es2.perftst; + +import java.nio.*; +import javax.media.opengl.*; +import com.sun.opengl.util.*; + +import com.sun.javafx.newt.*; +import com.sun.javafx.newt.opengl.*; + +public class PerfVBOLoad extends PerfModule { + + public PerfVBOLoad() { + } + + public void initShaderState(GL2ES2 gl) { + initShaderState(gl, "vbo-vert-col", "fcolor"); + } + + protected void runOneSet(GLAutoDrawable drawable, int dataType, int numObjs, int numVertices, int loops, boolean useVBO) { + GL2ES2 gl = drawable.getGL().getGL2ES2(); + + // + // data setup + // + + GLArrayDataServer[] vertices = new GLArrayDataServer[numObjs]; + GLArrayDataServer[] colors = new GLArrayDataServer[numObjs]; + + float x=0f, y=0f, z=0f; + float r=1f, g=1f, b=1f; + + for(int i=0; i1f) { x=0f; y=0f; z+=0.01f; } + } + } + colors[i] = GLArrayDataServer.createGLSL(gl, "mgl_Color", 4, dataType, true, numVertices, GL.GL_STATIC_DRAW); + colors[i].setVBOUsage(useVBO); + { + // Fill them up + Buffer colorb = colors[i].getBuffer(); + for(int j =0; j1) { + // we need to re-enable the buffer, + // incl. the vertex attribute refresh + // in case we switch to another buffer + vertices[j].enableBuffer(gl, true); + } + + t1[i][j] = System.currentTimeMillis(); + + if(i==0) { + colors[j].seal(gl, true); + } else { + colors[j].enableBuffer(gl, true); + } + + t2[i][j] = System.currentTimeMillis(); + + gl.glDrawArrays(GL.GL_LINE_STRIP, 0, vertices[j].getElementNumber()); + + if(numObjs>1) { + vertices[j].enableBuffer(gl, false); + colors[j].enableBuffer(gl, false); + } + + t3[i][j] = System.currentTimeMillis(); + } + + gl.glFinish(); + + tF[i] = System.currentTimeMillis(); + + drawable.swapBuffers(); + + tS[i] = System.currentTimeMillis(); + } + + if(numObjs==1) { + vertices[0].enableBuffer(gl, false); + colors[0].enableBuffer(gl, false); + } + + int verticesElements = vertices[0].getElementNumber() * numObjs; + int verticesBytes = verticesElements * vertices[0].getComponentSize()* vertices[0].getComponentNumber(); + int colorsElements = colors[0].getElementNumber() * colors.length; + int colorsBytes = colorsElements * colors[0].getComponentSize()* colors[0].getComponentNumber(); + + dt = 0; + for(int i=1; i