Repair JOGLAWTCanvas and then jmetest.util.JMEJOGLAWTTest

I have only an ATI Radeon 9250 Pro that doesn't support nor pixel shading neither official VBO extension (only ARB VBO). Lots of enums used in init in JOGLContextCapabilities are considered as invalid by my graphics card as unknown. Now, the JOGL canvas test works.



Replace the init() method in JOGLContextCapabilities:





public void init(final GL gl) {



        // See Renderer

        GL_ARB_vertex_buffer_object = gl

                .isExtensionAvailable("GL_ARB_vertex_buffer_object");

        GL_VERSION_1_2 = gl.isExtensionAvailable("GL_VERSION_1_2");



        // See BlendState

        GL_ARB_imaging = gl.isExtensionAvailable("GL_ARB_imaging");

        GL_EXT_blend_func_separate = gl

                .isExtensionAvailable("GL_EXT_blend_func_separate");

        GL_EXT_blend_equation_separate = gl

                .isExtensionAvailable("GL_EXT_blend_equation_separate");

        GL_EXT_blend_minmax = gl.isExtensionAvailable("GL_EXT_blend_minmax");

        GL_EXT_blend_subtract = gl

                .isExtensionAvailable("GL_EXT_blend_subtract");



        // See FogState

        GL_EXT_fog_coord = gl.isExtensionAvailable("GL_EXT_fog_coord");



        // See FragmentProgramState

        GL_ARB_fragment_program = gl

                .isExtensionAvailable("GL_ARB_fragment_program");



        // See ShaderObjectsState

        GL_ARB_shader_objects = gl

                .isExtensionAvailable("GL_ARB_shader_objects");

        GL_ARB_fragment_shader = gl

                .isExtensionAvailable("GL_ARB_fragment_shader");

        GL_ARB_vertex_shader = gl.isExtensionAvailable("GL_ARB_vertex_shader");

        GL_ARB_shading_language_100 = gl

                .isExtensionAvailable("GL_ARB_shading_language_100");



        try{gl.glGetIntegerv(GL.GL_MAX_VERTEX_ATTRIBS_ARB, intBuf);

            GL_MAX_VERTEX_ATTRIBS_ARB = intBuf.get(0);

          }

        catch(GLException gle)

        {

            GL_MAX_VERTEX_ATTRIBS_ARB=0;

        }

       



        try{gl.glGetIntegerv(GL.GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, intBuf);

            GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = intBuf.get(0);

          }

        catch(GLException gle)

        {GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB=0;}



        try{gl.glGetIntegerv(GL.GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB, intBuf);

        GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = intBuf.get(0);

        }

        catch(GLException gle)

        {GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB=0;}



        try{gl.glGetIntegerv(GL.GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, intBuf);

            GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = intBuf.get(0);

        }

        catch(GLException gle)

        {GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB=0;}



        try{gl.glGetIntegerv(GL.GL_MAX_VARYING_FLOATS_ARB, intBuf);

        GL_MAX_VARYING_FLOATS_ARB = intBuf.get(0);

        }

        catch(GLException gle)

        {GL_MAX_VARYING_FLOATS_ARB=0;}



        // See StencilState

        GL_EXT_stencil_two_side = gl

                .isExtensionAvailable("GL_EXT_stencil_two_side");

        GL_EXT_stencil_wrap = gl.isExtensionAvailable("GL_EXT_stencil_wrap");



        // See TextureState

        GL_ARB_multitexture = gl.isExtensionAvailable("GL_ARB_multitexture");

        GL_ARB_texture_env_dot3 = gl

                .isExtensionAvailable("GL_ARB_texture_env_dot3");

        GL_ARB_texture_env_combine = gl

                .isExtensionAvailable("GL_ARB_texture_env_combine");

        GL_SGIS_generate_mipmap = gl

                .isExtensionAvailable("GL_SGIS_generate_mipmap");

        GL_EXT_texture_compression_s3tc = gl

                .isExtensionAvailable("GL_EXT_texture_compression_s3tc");

        GL_EXT_texture_3d = gl.isExtensionAvailable("GL_EXT_texture_3d");

        GL_ARB_texture_cube_map = gl

                .isExtensionAvailable("GL_ARB_texture_cube_map");

        GL_EXT_texture_filter_anisotropic = gl

                .isExtensionAvailable("GL_EXT_texture_filter_anisotropic");

        GL_ARB_texture_non_power_of_two = gl

                .isExtensionAvailable("GL_ARB_texture_non_power_of_two");

        GL_ARB_texture_rectangle = gl

                .isExtensionAvailable("GL_ARB_texture_rectangle");



        gl.glGetIntegerv(GL.GL_MAX_TEXTURE_UNITS, intBuf);

        GL_MAX_TEXTURE_UNITS = intBuf.get(0);



        try{gl.glGetIntegerv(GL.GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB, intBuf);

        GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = intBuf.get(0);

        }

        catch(GLException gle)

        {GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB=0;}



        try{gl.glGetIntegerv(GL.GL_MAX_TEXTURE_IMAGE_UNITS_ARB, intBuf);

        GL_MAX_TEXTURE_IMAGE_UNITS_ARB = intBuf.get(0);

        }

        catch(GLException gle)

        {GL_MAX_TEXTURE_IMAGE_UNITS_ARB=0;}



        try{gl.glGetIntegerv(GL.GL_MAX_TEXTURE_COORDS_ARB, intBuf);

        GL_MAX_TEXTURE_COORDS_ARB = intBuf.get(0);}

        catch(GLException gle)

        {GL_MAX_TEXTURE_COORDS_ARB=0;}



        try{GL_SHADING_LANGUAGE_VERSION_ARB = gl

            .glGetString(GL.GL_SHADING_LANGUAGE_VERSION_ARB);}

        catch(GLException gle)

        {GL_SHADING_LANGUAGE_VERSION_ARB="";}



        // FIXME I don't think this was necessary: floatBuf.rewind();

        try{gl.glGetFloatv(GL.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, floatBuf);

        GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = floatBuf.get(0);

        }

        catch(GLException gle)

        {GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT=0;}



        // See VertexProgram

        GL_ARB_vertex_program = gl

                .isExtensionAvailable("GL_ARB_vertex_program");



        // See TextureStateRecord

        GL_ARB_texture_mirrored_repeat = gl

                .isExtensionAvailable("GL_ARB_texture_mirrored_repeat");

        GL_EXT_texture_mirror_clamp = gl

                .isExtensionAvailable("GL_EXT_texture_mirror_clamp");

        GL_ARB_texture_border_clamp = gl

                .isExtensionAvailable("GL_ARB_texture_border_clamp");



        GL_EXT_compiled_vertex_array = gl.isExtensionAvailable("GL_EXT_compiled_vertex_array");

    }





How can I become the maintainer of the JOGL renderer? I need to make it work just fine and I have enough time to investigate if there are other bugs on it.

the url you posted seems correct



for contributors (http://www.jmonkeyengine.com/jmeforum/index.php?topic=9169.0) its

https://jmonkeyengine.googlecode.com/svn/trunk

First try posting a diff patch against the latest SVN (as per the policy in this board), rather than instructions on what to replace. Most IDE supports generating such a diff with only a few clicks.



This helps other people see what goes in and what goes out more easily, and to apply it in their own IDEs

llama said:

First try posting a diff patch against the latest SVN (as per the policy in this board), rather than instructions on what to replace. Most IDE supports generating such a diff with only a few clicks.

This helps other people see what goes in and what goes out more easily, and to apply it in their own IDEs

Can I do it with Eclipse? I'm going to investigate.

I think it's right click file -> team -> create patch

llama said:

I think it's right click file -> team -> create patch

But I don't succeed in configuring SVN in Eclipse with this project. Which svn url do I have to use? http://jmonkeyengine.googlecode.com/svn/?
Which user? no password?

Well there must be some tutorials and stuff on that first, make sure you learn SVN or it'll be hard to contribute.



To check out you should use your Google account or Gmail acount, since you won't be able to check in any changes without one (if you get approval).

llama said:

Well there must be some tutorials and stuff on that first, make sure you learn SVN or it'll be hard to contribute.

To check out you should use your Google account or Gmail acount, since you won't be able to check in any changes without one (if you get approval).

I have used SVN for months for my own game, I only need the correct SVN URL, the login, the password and that's all. I know how it works. I tried to use the url I quoted and it didn't work.

I'm trying to do it with kdesvn instead of Eclipse. Good night

svn diff > ~/Desktop/bugfix.diff in the svn root, it is quite simple, please find the difference file enclosed. Time to sleep for me.


Core-Dump said:

the url you posted seems correct

for contributors (http://www.jmonkeyengine.com/jmeforum/index.php?topic=9169.0) its
https://jmonkeyengine.googlecode.com/svn/trunk


It works in command line ;) now.

Has someone watched the modification I suggest (the diff file in my previous post)?

hey there,



afaik, you post a diff and after 24 hours of noone voting against it, you can check it in. should be explained in the thread llama posted above.

dhdd said:

hey there,

afaik, you post a diff and after 24 hours of noone voting against it, you can check it in. should be explained in the thread llama posted above.

Then, is it the good section to post the diff??

Yes this is a good section… just post the change as a patch… and wait a bit…

Patch enclosed (the same)

I've found a bug in StandardGame, we allow to choose a renderer:

display = DisplaySystem.getDisplaySystem(settings.getRenderer());


but we force the use of LWJGL further:

display.registerCanvasConstructor("AWT", LWJGLAWTCanvasConstructor.class);


The more I watch the source code, the more I find bugs  :-o Does anybody use the JOGL renderer?

I have improved the regularity of the frame rate of JMEJOGLAWTTest by using an AWT frame and ignoring some repaint requests. Do you find it useful? On my machine (ATI Radeon 9250 Pro, AMD Sempron 2600+, 2GB DDRAM, Mandriva Linux 2007), the frame rate was between 32 and 49 FPS. Now it is always 49 FPS  :smiley:

Please find enclosed the previous fix (for JOGLContextCapabilities) and the next fix (for StandardGame) as a diff file.

Am I the only one who doesn't see any files?

I can see the files.