Posted by
sirus20x6 on
Sep 09, 2015; 8:48pm
URL: https://forum.jogamp.org/Possible-to-use-vertex-shader-without-vbo-tp4034532p4035259.html
If I limit how many vertices I draw it works (after a larger than expected delay of several seconds)
note x here is only 50 and I really have 678 elements
<code>
private void drawTerrain()
{
float [] v1 = new float[3];
float [] v2 = new float[3];
float [] norm = new float[3];
v1[0] = 30.0f / 5.0f; // Scale factor is a hack
v1[1] = 0.0f;
v2[0] = 0.0f;
v2[1] = 30.0f / 5.0f; // Ditto on hack
gl.glEnable(GLLightingFunc.GL_COLOR_MATERIAL);
gl.glColorMaterial(GL.GL_FRONT_AND_BACK,
GLLightingFunc.GL_AMBIENT_AND_DIFFUSE);
immModeSink.glBegin(GL.GL_TRIANGLE_STRIP);
for(int x = 1; x < 50; x++) {
for(int y = 1; y < latticeSizeY; y++)
{
v1[2] = Model.topo1dim[x+1 + y * latticeSizeX] - Model.topo1dim[x-1 + y * latticeSizeX];
v2[2] = Model.topo1dim[x + (y+1) * latticeSizeX] - Model.topo1dim[x + (y-1) * latticeSizeX];
cross(norm, v2, v1);
immModeSink.glNormal3f(norm[0],norm[1],norm[2]);
immModeSink.glColor3f(Model.vert_color2[x + y * Model.lattice_size_x].x, Model.vert_color2[(x + y * Model.lattice_size_x)].y, Model.vert_color2[(x + y * Model.lattice_size_x)].z);
immModeSink.glVertex3f(x, y, Model.topo1dim[x + y * latticeSizeX]);
x++;
v1[2] = Model.topo1dim[x+1 + y * latticeSizeX] - Model.topo1dim[x-1 + y * latticeSizeX];
v2[2] = Model.topo1dim[x + (y+1) * latticeSizeX] - Model.topo1dim[x + (y-1) * latticeSizeX];
cross(norm, v2, v1);
immModeSink.glNormal3f(norm[0],norm[1],norm[2]);
immModeSink.glColor3f(Model.vert_color2[x + y * Model.lattice_size_x].x, Model.vert_color2[(x + y * Model.lattice_size_x)].y, Model.vert_color2[(x + y * Model.lattice_size_x)].z);
immModeSink.glVertex3f(x, y, Model.topo1dim[x + y * latticeSizeX]);
x--;
}
//degenerate triangles
//eff
immModeSink.glNormal3f(0f,0f,0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, latticeSizeY, Model.topo1dim[x + latticeSizeY * latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x + 1, latticeSizeY, Model.topo1dim[(x + 1) + latticeSizeY * latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x + 1, latticeSizeY, Model.topo1dim[(x + 1) + latticeSizeY * latticeSizeX]);
//FFG
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x + 1, latticeSizeY, Model.topo1dim[(x + 1) + latticeSizeY * latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x + 1, latticeSizeY, Model.topo1dim[(x + 1) + latticeSizeY * latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
//FGG
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x + 1, latticeSizeY, Model.topo1dim[(x + 1) + latticeSizeY * latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
//GGH
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x + 1, 1, Model.topo1dim[(x + 1) + latticeSizeX]);
//GHG
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x + 1, 1, Model.topo1dim[(x + 1) + latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
//GGH
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
immModeSink.glNormal3f(0f, 0f, 0f);
immModeSink.glColor3f(0f, 0f, 0f);
immModeSink.glVertex3f(x, 1, Model.topo1dim[x + latticeSizeX]);
immModeSink.glNormal3f(0f,0f,0f);
immModeSink.glColor3f(0f,0f,0f);
immModeSink.glVertex3f(x + 1, 1, Model.topo1dim[(x + 1) + latticeSizeX]);
}
immModeSink.glEnd(gl);
}
</code>

Thats a small strip of the terrain now working correctly.
If I increase x to say 150 or over then it never loads and I have to issue a kill signal to terminate it.
full code here
https://github.com/sirus20x6/Wilsim-GC/blob/HR/src/View.java