I have the 7800GT card on my other computer and still have some issues.
The problem for us is that we are using JOGL for the last project at a bachelor education, and the product is suppose to be used by low-end computers. Since intel extreme graphics seem to be one of the most common graphics cards in use we have problems
Here is a more extensive report of the issues we have had with different hardware so far in the project:
The computers:
Amd64 x2 3800+
2GB DDR memory
WD raptor 74GB
Geforce 7800GT with newest forceware
Most works. PBuffer code (will post below) work even with destroy unlike most other machines, but with multiple tabs it cant redraw the canvas before its clicked EVERYTIME you do something with the window. Also crashes when using repaint() in reshape method saying something about singlethreadworkaround. Have none of these problems when we are not using tabs.
Dell inspiron 510m
CeleronM 1.3ghz
512MB DDR memory
intel extreme graphics 2: tried with both default dell drivers and newest intel drivers
When resizing a window it fill the “new” area with random data. Can be “avoided” if forcing a repaint() at the end of reshape() (although it will have a 1-2 seconds delay before it works) method, but will cause problems for the computer above. Was told it could work if we instead of running repaint() just start a thread that run repaint(), but I cant confirm this. Also have insane lag on each tab created with canvas after 5 tabs are clicked (first 5 tabs still work smooth though). PBuffer code works like a dream though as long as the destroy() on the pbuffer present. If the destroy is removed it will crash if the code is run several times.
IBM thinkpad r50e
CeleronM 1.4ghz
512MB DDR memory
intel extreme graphics 2: default ibm drivers
Same as above except that the pbuffer code crash on destroy() method. Someone said it would work if we created a whole new thread just to do destroy(), but I cannot confirm this.
Acer TravelMate 2310
Celeron M, 1.2ghz I think
256MB DDR memory (192MB because of shared memory)
SiS m661mx card using newest drivers
Will crash bigtime on pbuffer code, but else everything works like a dream (even though this computer has the worst spesifications).
amd athlon xp 1800+
1GB memory
nvidia geforce fx 5900 ultra
Everything seem to work ok with this computer. Both canvases in tabs, pbuffer code, and redraw both with and without repaint() in reshape method.
Also barly tried another computer that I do not have the specs of, and the pbuffer code crashed bigtime.
PBuffer code:
protected boolean Capture()
{
if(GLDrawableFactory.getFactory().canCreateGLPbuffer())
{
GLCapabilities caps = new GLCapabilities();
caps.setDoubleBuffered(false);
GLPbuffer offScreenCanvas = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, 1024, 768,
canvas.getContext());
offScreenCanvas.addGLEventListener(this);
offScreenCanvas.display();
offScreenCanvas.removeGLEventListener(this);
offScreenCanvas.destroy(); //will crash here on half of the computers
return true;
} else return false;
}
reshape code:
//will display random trash on new area until a repaint is forced on half of the computers. on one computer a forced repaint will
crash the application saying something about singlethread. Even if a repaint is forced it will take a second or two for the random trash
disapears and the image is streched.
public void reshape(GLAutoDrawable glDrawable, int x, int y, int width, int height)
{
GL gl = glDrawable.getGL();
int width_l = width;
int height_l = height;
if(height <= 0)
height = 1;
final float h = (float)width_l /(float)height_l;
ratio = h;
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(45.0f, h, 0.1f, 200.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
canvas.repaint(); //this is causing problems for some machines, but for some not
}
tabs:
Not much to say about the tabs. We have a static Context used for keeping track on the context so every canvas get the same
context on “new GLCanvas”.
from the panel holding the canvas:
public static GLContext context = null;
from the contructor of the panel holding the canvas:
if(context != null)
canvas = new GLCanvas(caps, null, context, null);
else
{
canvas = new GLCanvas(caps);
context = canvas.getContext();
}
The panel holding this data is used with this code:
tabbedpane.addTab("name", new Scene()); where Scene inherits JPanel and place the canvas as BorderLayout.CENTER
–
The resize/redraw issues are described in the following threads:
http://www.java-gaming.org/forums/index.php?topic=12225.0
http://www.java-gaming.org/forums/index.php?topic=8738.0
The tab issues are described in the following thread:
http://www.java-gaming.org/forums/index.php?topic=12761.0
I hope the fault is ours so its fixable…otherwise we have a hudge problem