Re: Possible to use vertex shader without vbo?
Posted by sirus20x6 on Jun 28, 2015; 1:55pm
URL: https://forum.jogamp.org/Possible-to-use-vertex-shader-without-vbo-tp4034532p4034773.html
I tried to make the conversion based on OneTriangle.java but my app just freezes on launch with no error thrown.
[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.glBegin(GL.GL_TRIANGLE_STRIP);
immModeSink.glBegin(GL.GL_TRIANGLE_STRIP);
for(int x = 1; x < latticeSizeX; x++) {
for(int y = 1; y < latticeSizeY; y++)
{
v1[2] = Wilsim.m.topo1d[x+1 + y * latticeSizeX] - Wilsim.m.topo1d[x-1 + y * latticeSizeX];
v2[2] = Wilsim.m.topo1d[x + (y+1) * latticeSizeX] - Wilsim.m.topo1d[x + (y-1) * latticeSizeX];
cross(norm, v2, v1);
//gl.glNormal3fv(norm, 0);
immModeSink.glNormal3f(norm[0], norm[1], norm[2]);
//gl.glColor3f(Wilsim.m.vert_color2[x + y * Wilsim.m.lattice_size_x].x, Wilsim.m.vert_color2[(x + y * Wilsim.m.lattice_size_x)].y, Wilsim.m.vert_color2[(x + y * Wilsim.m.lattice_size_x)].z);
immModeSink.glColor3f(Wilsim.m.vert_color2[x + y * Wilsim.m.lattice_size_x].x, Wilsim.m.vert_color2[(x + y * Wilsim.m.lattice_size_x)].y, Wilsim.m.vert_color2[(x + y * Wilsim.m.lattice_size_x)].z);
//gl.glVertex3f(x, y, Wilsim.m.topo1d[x + y * latticeSizeX]);
immModeSink.glVertex3f(x, y, Wilsim.m.topo1d[x + y * latticeSizeX]);
//gl.glColor3f(Wilsim.m.vert_color2[x + y * Wilsim.m.lattice_size_x].x, Wilsim.m.vert_color2[(x + y * Wilsim.m.lattice_size_x)].y, Wilsim.m.vert_color2[(x + y * Wilsim.m.lattice_size_x)].z);
immModeSink.glColor3f(Wilsim.m.vert_color2[x + y * Wilsim.m.lattice_size_x].x, Wilsim.m.vert_color2[(x + y * Wilsim.m.lattice_size_x)].y, Wilsim.m.vert_color2[(x + y * Wilsim.m.lattice_size_x)].z);
//gl.glVertex3f(x + 1, y, Wilsim.m.topo1d[(x + 1) + y * latticeSizeX]);
immModeSink.glVertex3f(x + 1, y, Wilsim.m.topo1d[(x + 1) + y * latticeSizeX]);
}
//degenerate triangles
//eff
immModeSink.glVertex3f(x, latticeSizeY, Wilsim.m.topo1d[x + latticeSizeY * latticeSizeX]);
immModeSink.glVertex3f(x + 1, latticeSizeY, Wilsim.m.topo1d[(x + 1) + latticeSizeY * latticeSizeX]);
immModeSink.glVertex3f(x + 1, latticeSizeY, Wilsim.m.topo1d[(x + 1) + latticeSizeY * latticeSizeX]);
//FFG
immModeSink.glVertex3f(x + 1, latticeSizeY, Wilsim.m.topo1d[(x + 1) + latticeSizeY * latticeSizeX]);
immModeSink.glVertex3f(x + 1, latticeSizeY, Wilsim.m.topo1d[(x + 1) + latticeSizeY * latticeSizeX]);
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
//FGG
immModeSink.glVertex3f(x + 1, latticeSizeY, Wilsim.m.topo1d[(x + 1) + latticeSizeY * latticeSizeX]);
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
//GGH
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
immModeSink.glVertex3f(x + 1, 1, Wilsim.m.topo1d[(x + 1) + 1 * latticeSizeX]);
//GHG
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
immModeSink.glVertex3f(x + 1, 1, Wilsim.m.topo1d[(x + 1) + 1 * latticeSizeX]);
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
//GGH
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
immModeSink.glVertex3f(x, 1, Wilsim.m.topo1d[x + 1 * latticeSizeX]);
immModeSink.glVertex3f(x + 1, 1, Wilsim.m.topo1d[(x + 1) + 1 * latticeSizeX]);
}
//gl.glEnd();
immModeSink.glEnd(gl, true);
}
[/code]