Login  Register

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]