Trouble with pBuffers on Windows 2000

Hi, Can anbody get me straight on what special I have to do on Window to get pbuffers to work. I’ve heard from time to time that I have to open additional canvas and hide it or something strane like that.

I presently have an application working that will render into the pbuffer and then copy the contents to texture memory. However when I try and run it on a windows 2000 box I get no errors but it never seems to call the pbuffer init method. The GLCanvas returns that it can create pbuffers but nothing happens after the create method is called. The canvas is visible and all that, remember it works on Linux and Mac’s, but I’m having problems getting it to work on windows.

Please can somebody guide me as to what I need to do in some details.

Thanks.

John

What graphics cards do you have in the various machines? JOGL’s pbuffer support was developed on Windows 2000 and then ported to the other platforms. There are currently some problems reported on ATI cards which GKW on these forums is working on fixing.

Hi, My video card is ATI 3D Rage Pro AGP 2X. Do you know if there is something that I can do to workaround the issue. I can’t find much discussion on the issues.

John

[quote]Hi, My video card is ATI 3D Rage Pro AGP 2X. Do you know if there is something that I can do to workaround the issue. I can’t find much discussion on the issues.

John
[/quote]
Is that the card you’re using on all platforms? That graphics card is really old and I would be surprised if pbuffers worked at all on it even if you were programming in C rather than in Java using JOGL.

I’m develoiping an application that will be used on all three platforms (Mac, Linux, Windows). Machines will; have the hardware that they have. The OS and Java through the drivers will normalise the capabilities. So if I write to a standard (like OpenGL) it dosen’t matter what harware I have. Right?.

I expected that the GLCanvas call .canCreateOffscreenBuffers() would have returned a value that says whether pbuffers could be used on the underlying drivers and/or hardware, but this call always returns true.

It seems that I will have to overide this method and keep a list somewhere or what hardware/OS/drivers I know work with pbuffers so I can return the correct value. I have a fix that implements pbuffers using Java2D but its slow (needless to say) but it does make the application work on all platforms. I was hoping that jopgl would do this for me but I guess not.

canCreateOffscreenBuffers will always return true even if your card doesn’t support pbuffers which of course is a bug. My suggestion would be to download the latest drivers from ATI and then download GLEW from sourceforge. It will tell you whether your card supports pbuffers or not. Some versions of the regepro support pbuffers some don’t. If GLEW says it supports pbuffers then I will point you to my dev build and we can see if that fixes anything.

Ok, Thanks. I ran glewinfo and visualinfo. I suspect that the output from glewinfo.txt is the one that I’m interested in?. It says that :
GL_VERSION_1_1 OK

GL_VERSION_1_2 MISSING

GL_VERSION_1_3 MISSING

GL_VERSION_1_4 MISSING

and all the various extensions under 1_2, 1_3 and 1_4 showup as missing. So therfore the driver is not able to handle pbuffers. Right?

So my next question is how can I test for pbuffers availability in a drivers. Which extension should I test for?

John

You should be able to test isExtensionAvailable(“GL_ARB_pbuffer”) on all platforms once init() has been called for your first onscreen GL context. (Sorry we aren’t already doing this in the source base – at some point soon we’ll fix the canCreateOffscreenDrawable() method. Please feel free to file a bug with the JOGL Issue Tracker about this.)

Thank. One other quesion. Can I call it it within the init() method of the first GLCanvas or must I wait untill the first init method has retruned?

You can check that extension’s availability while inside your init() method.