I add jogl to EditorPart , but find some bug at refresh area, help me please.

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

I add jogl to EditorPart , but find some bug at refresh area, help me please.

yymusic
I add joal 2.1 to eclipse,  add to a EditorPart control, When I run it, I seed the 3D graphic.
Then I open other program, the window of other program will cover the part of 3D window.  When I minimized the other program window, I will see the 3D graphic again, but only the area that covered by other windows before can rendering now. other area are frozen.

sample code as follow, thanks.

canvas.addListener(SWT.Resize, new Listener() {
                @Override
                public void handleEvent(Event event) {
                   
                    Rectangle bounds = canvas.getBounds();
                    float fAspect = (float) bounds.width / (float) bounds.height;
                    canvas.setCurrent();
                    context.makeCurrent();
                    GL2 gl = context.getGL().getGL2();
                    gl.glViewport(0, 0, bounds.width, bounds.height);
                    gl.glMatrixMode(GL2.GL_PROJECTION);
                    gl.glLoadIdentity();
                    GLU glu = new GLU();
                    glu.gluPerspective(45.0f, fAspect, 0.5f, 400.0f);
                    gl.glMatrixMode(GL2.GL_MODELVIEW);
                    gl.glLoadIdentity();
                    context.release();
                   
                }
            });

            canvas.addPaintListener(new PaintListener()
            {
                int rot = 1;
                public void paintControl(PaintEvent e)
                {
                    if (!canvas.isDisposed()) {
                        canvas.setCurrent();
                        context.makeCurrent();
                        GL2 gl = context.getGL().getGL2();
                        gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
                        gl.glClearColor(.3f, .5f, .8f, 1.0f);
                        gl.glLoadIdentity();
                        gl.glTranslatef(0.0f, 0.0f, -10.0f);
                        float frot = rot;
                        gl.glRotatef(0.15f * rot, 2.0f * frot, 10.0f * frot, 1.0f);
                        gl.glRotatef(0.3f * rot, 3.0f * frot, 1.0f * frot, 1.0f);
                        //rot++;
                        gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE);
                        gl.glColor3f(0.9f, 0.9f, 0.9f);
                        drawTorus(gl, 1, 1.9f + ((float) Math.sin((0.004f * frot))), 15, 15);
                        canvas.swapBuffers();
                        context.release();
                        //display.asyncExec(this);
                    }
                }
            });
           
            context.makeCurrent();
            GL2 gl = context.getGL().getGL2();
            gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
            gl.glColor3f(1.0f, 0.0f, 0.0f);
            gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL2.GL_NICEST);
            gl.glClearDepth(1.0);
            gl.glLineWidth(2);
            gl.glEnable(GL2.GL_DEPTH_TEST);
            context.release();
Reply | Threaded
Open this post in threaded view
|

Re: I add jogl to EditorPart , but find some bug at refresh area, help me please.

yymusic
I found the bug, root cause is GraphicalViewerImpl hook the canvas.
Reply | Threaded
Open this post in threaded view
|

Re: I add jogl to EditorPart , but find some bug at refresh area, help me please.

gouessej
Administrator
In reply to this post by yymusic
Hi

Please use JOGL 2.3.2 if you want to get some help. GraphicalViewerImpl comes from GEF, I tried to use it 5 years ago but its version based on JOGL wasn't publicly available. I remind you that the Eclipse SWT OpenGL canvas is no longer maintained (since 2005) unlike JOGL SWT GLCanvas and NEWTCanvasSWT.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: I add jogl to EditorPart , but find some bug at refresh area, help me please.

Wade Walker
Administrator
In reply to this post by yymusic
I've done this sort of thing successfully before, it sounds like maybe you're doing custom processing on the paint events over the GL canvas (like to redraw GL where tooltips obscure the canvas) and are getting the draw regions inverted somehow.