pbuffers

  • Follow


I am trying to create pbuffers but its not been created ..
wglCreatePbufferARB( g_hDC, pixelFormat,
g_pbuffer.nWidth, g_pbuffer.nHeight, NULL ) failed to crete the
pbuffer...

here is the code i tried..

wglChoosePixelFormatARB( g_hDC,(const int*)pf_attr, NULL, 1,
&pixelFormat, &count);
   if( count == 0 )
     {
      MessageBox(NULL,"Could not find an acceptable pixel
format!",
                        "ERROR",MB_OK|MB_ICONEXCLAMATION);
                exit(-1);
        }

        g_pbuffer.hPBuffer = wglCreatePbufferARB( g_hDC, pixelFormat,
g_pbuffer.nWidth, g_pbuffer.nHeight, NULL );
        g_pbuffer.hDC      =
wglGetPbufferDCARB( g_pbuffer.hPBuffer );
        g_pbuffer.hRC      = wglCreateContext( g_pbuffer.hDC );


        if( !g_pbuffer.hPBuffer )
        {
                MessageBox(NULL,"Could not create the p-buffer",
                        "ERROR",MB_OK|MB_ICONEXCLAMATION);
                exit(-1);
        }


i am getting "Could not create the p-buffer"...


please reply..I am using WILD CAT graphics card its
memory is 128 MB.


is it problem of wglext.h i dont have this local header file...i
just downloaded it ...


0
Reply rao.tejaswini (13) 1/23/2008 5:04:14 AM

teju wrote:

> please reply..I am using WILD CAT graphics card its
> memory is 128 MB.

Could you please post the whole vendor, version, renderer and
extension strings of your system, i.e. the strings you get with
the following C program:

/* ------------------------------------ */
#include <GL/glut.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA);
    glutCreateWindow("glGetString");

    printf("--- Vendor ---\n%s\n\n", glGetString(GL_VENDOR));
    printf("--- Version ---\n%s\n\n", glGetString(GL_VERSION));
    printf("--- Renderer ---\n%s\n\n", glGetString(GL_RENDERER));
    printf("--- Extensions ---\n%s\n\n",
glGetString(GL_EXTENSIONS));

    return 0;
}
/* ------------------------------------ */

Eventually PBuffers aren't supported at all on your system.

Wolfgang Draxinger
-- 
E-Mail address works, Jabber: hexarith@jabber.org, ICQ: 134682867

0
Reply Wolfgang 1/23/2008 8:55:18 AM


On Jan 23, 1:55=A0pm, Wolfgang Draxinger <wdraxin...@darkstargames.de>
wrote:
> teju wrote:
> > please reply..I am using WILD CAT graphics card its
> > memory is 128 MB.
>
> Could you please post the whole vendor, version, renderer and
> extension strings of your system, i.e. the strings you get with
> the following C program:
>
> /* ------------------------------------ */
> #include <GL/glut.h>
> #include <stdio.h>
>
> int main(int argc, char *argv[])
> {
> =A0 =A0 glutInit(&argc, argv);
> =A0 =A0 glutInitDisplayMode(GLUT_RGBA);
> =A0 =A0 glutCreateWindow("glGetString");
>
> =A0 =A0 printf("--- Vendor ---\n%s\n\n", glGetString(GL_VENDOR));
> =A0 =A0 printf("--- Version ---\n%s\n\n", glGetString(GL_VERSION));
> =A0 =A0 printf("--- Renderer ---\n%s\n\n", glGetString(GL_RENDERER));
> =A0 =A0 printf("--- Extensions ---\n%s\n\n",
> glGetString(GL_EXTENSIONS));
>
> =A0 =A0 return 0;}
>
> /* ------------------------------------ */
>
> Eventually PBuffers aren't supported at all on your system.
>
> Wolfgang Draxinger
> --
> E-Mail address works, Jabber: hexar...@jabber.org, ICQ: 134682867


here is the information about all that

--- Vendor ---
Intergraph Corporation

--- Version ---
1.3

--- Renderer ---
wcgdrv 05.06.00.38

--- Extensions ---
ARB_imaging
GL_EXT_422_pixels
GL_EXT_bgra
GL_EXT_blend_color
GL_EXT_blend_func_separate
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_color_matrix GL_SGI_color_matrix
GL_EXT_color_subtable
GL_EXT_color_table
GL_SGI_color_table GL_EXT_convolution
GL_EXT_convolution_border_modes
GL_EXT_draw_range_elements
GL_EXT_fog_function
GL_SGIS_fog_function
GL_EXT_fog_offset
GL_SGIX_fog_offset
GL_EXT_generate_mipmap
GL_SGIS_generate_mipmap, GL_EXT_histogram,  GL_EXT_interlace
GL_SGIX_interlace,
GL_EXT_multisample GL_SGIS_multisample GL_ARB_multisample
GL_EXT_packed_pixels
GL_EXT_pixel_texture GL_SGIX_pixel_texture GL_EXT_rescale_normal
GL_EXT_separate_specular_color GL_EXT_stencil_wrap GL_EXT_swap_control
GL_EXT_texture3D
GL_EXT_texture4D GL_SGIS_texture4D GL_EXT_texture_border_clamp
GL_SGIS_texture_border_clamp
GL_ARB_texture_border_clamp GL_EXT_texture_color_table
GL_SGI_texture_color_table
GL_EXT_texture_edge_clamp GL_EXT_texture_lod GL_EXT_texture_object
GL_Autodesk_valid_back_buffer_hint GL_I3D_argb GL_I3D_color_clamp
GL_I3D_interlace_read
GL_KTX_buffer_region   GL_WIN_swap_hint   GL_IBM_rescale_normal
GL_IBM_cull_vertex
GL_OML_interlace GL_OML_subsample GL_OML_resample
GL_EXT_texture_lod_bias
GL_3Dlabs_multisample_transparency_range
GL_3Dlabs_multisample_transparency_id
GL_ARB_multitexture   GL_ARB_texture_compression
GL_ARB_texture_cube_map
GL_ARB_texture_env_add   GL_ARB_texture_env_combine
GL_EXT_texture_env_combine
GL_ARB_texture_env_dot3  GL_ARB_transpose_matrix
GL_SGIS_texture_color_mask

so is pbuffer not supported iy my system?
frame buffers, pbuffers both are not suported but i need to map my
dynamically drawn 2d opengl window to one face of a cube in cosmo3d
scenegraph.....is this all really possible?
please reply...


0
Reply teju 1/23/2008 10:28:20 AM

On Jan 23, 6:04 am, teju <rao.tejasw...@gmail.com> wrote:
>
> wglChoosePixelFormatARB( g_hDC,(const int*)pf_attr, NULL, 1,
> &pixelFormat, &count);
>    if( count == 0 ) {
>       MessageBox(NULL,"Could not find an acceptable pixel
> format!"
>      }
>
>      g_pbuffer.hPBuffer = wglCreatePbufferARB();

> i am getting "Could not create the p-buffer"...
>

What you're saying is that you chose a pixel format which
doesn't work with pbuffers.

The problem must be in "pf_attr"...

- either that or "g_hDC" isn't the right sort of device
(it must be a window...and not the desktop Window).

0
Reply fungus 1/23/2008 1:39:27 PM

On Jan 23, 11:28 am, teju <rao.tejasw...@gmail.com> wrote:
>
> so is pbuffer not supported iy my system?

No, it isn't. You're the owner of one of the 0.0000001%
of video cards which doesn't support it.

I don't understand how you got a wglCreatePbufferARB
function. wglGetProcAddress() should return null if
it isn't supported.


--
<\___/>
/ O O \
\_____/  FTB.     Remove my socks for email address.
0
Reply fungus 1/23/2008 2:17:21 PM

fungus wrote:

> I don't understand how you got a wglCreatePbufferARB
> function. wglGetProcAddress() should return null if
> it isn't supported.

That's a pitfall of OpenGL extensions: The driver may well contain the code
for supporting PBuffers, and also expose the function pointers
through ...GetProcAddress. However if the extension is supported can only
be determined through the extension string.

The small program I posted is unfotunately not capable to test for the
PBuffer extension, sorry. PBuffers actually are an extension on the display
system side (special kind of DC to attach an OpenGL context to), this is a
part of GLX or WGL. So you've to query them through either
glXQueryExtensionsString on X11, or wglGetExtensionsString on Windows.
wglGetExtensionsString again is to be get by wglGetProcAddress.

Sorry, my mistake. Use glInfo tool (google for it) on Windows to query. On a
X11 system you should have the program glxinfo.

Wolfgang

0
Reply Wolfgang 1/23/2008 6:05:44 PM

On Jan 23, 11:05=A0pm, Wolfgang Draxinger <wdraxin...@darkstargames.de>
wrote:
> fungus wrote:
> > I don't understand how you got a wglCreatePbufferARB
> > function. wglGetProcAddress() should return null if
> > it isn't supported.
>
> That's a pitfall of OpenGL extensions: The driver may well contain the cod=
e
> for supporting PBuffers, and also expose the function pointers
> through ...GetProcAddress. However if the extension is supported can only
> be determined through the extension string.
>
> The small program I posted is unfotunately not capable to test for the
> PBuffer extension, sorry. PBuffers actually are an extension on the displa=
y
> system side (special kind of DC to attach an OpenGL context to), this is a=

> part of GLX or WGL. So you've to query them through either
> glXQueryExtensionsString on X11, or wglGetExtensionsString on Windows.
> wglGetExtensionsString again is to be get by wglGetProcAddress.
>
> Sorry, my mistake. Use glInfo tool (google for it) on Windows to query. On=
 a
> X11 system you should have the program glxinfo.
>
> Wolfgang

but i am using windows xp...will try this get back to u
0
Reply teju 1/24/2008 8:33:57 AM

On Jan 24, 1:33=A0pm, teju <rao.tejasw...@gmail.com> wrote:
> On Jan 23, 11:05=A0pm, Wolfgang Draxinger <wdraxin...@darkstargames.de>
> wrote:
>
>
>
>
>
> > fungus wrote:
> > > I don't understand how you got a wglCreatePbufferARB
> > > function. wglGetProcAddress() should return null if
> > > it isn't supported.
>
> > That's a pitfall of OpenGL extensions: The driver may well contain the c=
ode
> > for supporting PBuffers, and also expose the function pointers
> > through ...GetProcAddress. However if the extension is supported can onl=
y
> > be determined through the extension string.
>
> > The small program I posted is unfotunately not capable to test for the
> > PBuffer extension, sorry. PBuffers actually are an extension on the disp=
lay
> > system side (special kind of DC to attach an OpenGL context to), this is=
 a
> > part of GLX or WGL. So you've to query them through either
> > glXQueryExtensionsString on X11, or wglGetExtensionsString on Windows.
> > wglGetExtensionsString again is to be get by wglGetProcAddress.
>
> > Sorry, my mistake. Use glInfo tool (google for it) on Windows to query. =
On a
> > X11 system you should have the program glxinfo.
>
> > Wolfgang
>
> but i am using windows xp...will try this get back to u- Hide quoted text =
-
>
> - Show quoted text -

i tried this code but still have problem..


wglGetExtensionsStringARB =3D
(PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringA=
RB");
	char *ext =3D NULL;

	if( wglGetExtensionsStringARB )
		ext =3D (char*)wglGetExtensionsStringARB( wglGetCurrentDC() );
	else
	{
		MessageBox(NULL,"Unable to get address for
wglGetExtensionsStringARB!",
			"ERROR",MB_OK|MB_ICONEXCLAMATION);
		exit(-1);
	}



	if( strstr( ext, "WGL_ARB_pbuffer" ) =3D=3D NULL )
	{
		MessageBox(NULL,"WGL_ARB_pbuffer extension was not found",
			"ERROR",MB_OK|MB_ICONEXCLAMATION);
		exit(-1);
	}
	else
	{
	      wglCreatePbufferARB    =3D
(PFNWGLCREATEPBUFFERARBPROC)wglGetProcAddress("wglCreatePbufferARB");
	     wglGetPbufferDCARB
=3D(PFNWGLGETPBUFFERDCARBPROC)wglGetProcAddress("wglGetPbufferDCARB");
	     wglReleasePbufferDCARB =3D
(PFNWGLRELEASEPBUFFERDCARBPROC)wglGetProcAddress("wglReleasePbufferDCARB");
	     wglDestroyPbufferARB   =3D
(PFNWGLDESTROYPBUFFERARBPROC)wglGetProcAddress("wglDestroyPbufferARB");
	     wglQueryPbufferARB     =3D
(PFNWGLQUERYPBUFFERARBPROC)wglGetProcAddress("wglQueryPbufferARB");

	if(   !wglCreatePbufferARB  || !wglGetPbufferDCARB ||  !
wglReleasePbufferDCARB ||
			!wglDestroyPbufferARB || !wglQueryPbufferARB )
		{
			MessageBox(NULL,"One or more WGL_ARB_pbuffer functions were not
found",
				"ERROR",MB_OK|MB_ICONEXCLAMATION);
			exit(-1);
		}
	}


but even the above code works fine and "wglCreatePbufferARB" function
is not NULL but still  fails...


teju
0
Reply teju 1/24/2008 9:30:23 AM

On Jan 24, 10:30 am, teju <rao.tejasw...@gmail.com> wrote:
>
> but even the above code works fine and "wglCreatePbufferARB" function
> is not NULL but still  fails...
>

In that case your wglChoosePixelFormat is wrong.


--
<\___/>
/ O O \
\_____/  FTB.     Remove my socks for email address.
0
Reply fungus 1/24/2008 3:59:11 PM

"teju" <rao.tejaswini@gmail.com> wrote in message 
news:2b4fea7a-187b-4386-a36e-3c234d9280c2@s13g2000prd.googlegroups.com...
>
>
> fungus wrote:
>> On Jan 24, 10:30 am, teju <rao.tejasw...@gmail.com> wrote:
>> >
>> > but even the above code works fine and "wglCreatePbufferARB" function
>> > is not NULL but still  fails...
>> >
>>
>> In that case your wglChoosePixelFormat is wrong.
>>
>>
>> --
>> <\___/>
>> / O O \
>> \_____/  FTB.     Remove my socks for email address.
>
>
> i have posted the code...can u tell me where i have gone wrong
>
>                g_pbuffer.hPBuffer = NULL;
> g_pbuffer.nWidth   = PBUFFER_WIDTH;
> g_pbuffer.nHeight  = PBUFFER_HEIGHT;
>
> int pf_attr[] =
> {
> WGL_SUPPORT_OPENGL_ARB, TRUE,
> WGL_DRAW_TO_PBUFFER_ARB, TRUE,
> WGL_RED_BITS_ARB, 8,
> WGL_GREEN_BITS_ARB, 8,
> WGL_BLUE_BITS_ARB, 8,
> WGL_ALPHA_BITS_ARB, 8,
> WGL_DEPTH_BITS_ARB, 16,
> WGL_DOUBLE_BUFFER_ARB, FALSE,
> 0
> };
>
> unsigned int count = 0;
> int pixelFormat;
>
> wglChoosePixelFormatARB( g_hDC,(const int*)pf_attr, NULL, 1,
> &pixelFormat, &count);
>
> if( count == 0 )
> {
> MessageBox(NULL,"Could not find an acceptable pixel format!",
> "ERROR",MB_OK|MB_ICONEXCLAMATION);
> exit(-1);
> }
>
>
>                  here count is having value 4.......after that when i
> do this:
>
> g_pbuffer.hPBuffer = wglCreatePbufferARB( g_hDC, pixelFormat,
> g_pbuffer.nWidth, g_pbuffer.nHeight, NULL );
> g_pbuffer.hDC      = wglGetPbufferDCARB( g_pbuffer.hPBuffer );
> g_pbuffer.hRC      = wglCreateContext( g_pbuffer.hDC );
>
> All functions are working I mean returning non zero values but still
> g_pbuffer.hPBuffer is NULL...


16 bits is a bad choice for depth; use 24. I've found 16 can yield 
unexpected (software rendering, no creation) results.
And, have you tried double buffer ? Width/Height no bigger than screen, 
right ? Probably can't be.

and, fix your args to wglCreatePbufferARB -- last arg isn't NULL.

Try to find a known-to-work pbuffer sample program & run it, verify it 
works, and reverse engineer.

jbw 


0
Reply jbwest 1/25/2008 6:09:27 AM


fungus wrote:
> On Jan 24, 10:30 am, teju <rao.tejasw...@gmail.com> wrote:
> >
> > but even the above code works fine and "wglCreatePbufferARB" function
> > is not NULL but still  fails...
> >
>
> In that case your wglChoosePixelFormat is wrong.
>
>
> --
> <\___/>
> / O O \
> \_____/  FTB.     Remove my socks for email address.


i have posted the code...can u tell me where i have gone wrong

                g_pbuffer.hPBuffer = NULL;
	g_pbuffer.nWidth   = PBUFFER_WIDTH;
	g_pbuffer.nHeight  = PBUFFER_HEIGHT;

	int pf_attr[] =
	{
		WGL_SUPPORT_OPENGL_ARB, TRUE,
		WGL_DRAW_TO_PBUFFER_ARB, TRUE,
		WGL_RED_BITS_ARB, 8,
		WGL_GREEN_BITS_ARB, 8,
		WGL_BLUE_BITS_ARB, 8,
		WGL_ALPHA_BITS_ARB, 8,
		WGL_DEPTH_BITS_ARB, 16,
		WGL_DOUBLE_BUFFER_ARB, FALSE,
		0
	};

	unsigned int count = 0;
	int pixelFormat;

	wglChoosePixelFormatARB( g_hDC,(const int*)pf_attr, NULL, 1,
&pixelFormat, &count);

	if( count == 0 )
	{
		MessageBox(NULL,"Could not find an acceptable pixel format!",
			"ERROR",MB_OK|MB_ICONEXCLAMATION);
		exit(-1);
	}


                  here count is having value 4.......after that when i
do this:

	g_pbuffer.hPBuffer = wglCreatePbufferARB( g_hDC, pixelFormat,
g_pbuffer.nWidth, g_pbuffer.nHeight, NULL );
	g_pbuffer.hDC      = wglGetPbufferDCARB( g_pbuffer.hPBuffer );
	g_pbuffer.hRC      = wglCreateContext( g_pbuffer.hDC );

All functions are working I mean returning non zero values but still
g_pbuffer.hPBuffer is NULL...
0
Reply teju 1/25/2008 9:38:11 AM

"teju" <rao.tejaswini@gmail.com> wrote in message 
news:2b4fea7a-187b-4386-a36e-3c234d9280c2@s13g2000prd.googlegroups.com...
> i have posted the code...can u tell me where i have gone wrong

You are posting separate news posts to comp.graphics.algorithms and
to this group asking the same questions.  If you must post to both
groups, then post to both simultaneously.  AND listen to what people
are telling you.

> g_pbuffer.hPBuffer = wglCreatePbufferARB( g_hDC, pixelFormat,
> g_pbuffer.nWidth, g_pbuffer.nHeight, NULL );

I already asked you in c.g.a why you are passing NULL as the last
parameter.  You never responded.  And I pointed you to code at
my web site that shows what you should do to pass a non-null last
value:  You need to set attributes in an array to pass to
wglCreatePbufferARB.  For example, to create the pbuffer as an
RGBA 2D texture with mipmaps,

int attr[256];
int pos = 0;
attr[pos++] = WGL_TEXTURE_FORMAT_ARB;
attr[pos++] = WGL_TEXTURE_2D_ARB;
attr[pos++] = WGL_MIPMAP_TEXTURE_ARB;
attr[pos++] = GL_TRUE;
attr[pos++] = 0;  // zero-terminated list
g_pbuffer.hPBuffer = wglCreatePBufferARB(g_hDC, pixelFormat,
    g_pbuffer.nWidth, g_pbuffer.nHeight, attr);

Also, you can create the pbuffer without mipmaps.  You can specify a
cubemap texture target with or without mipmaps.  But you have to
specify *something*.

--
Dave Eberly
http://www.geometrictools.com


0
Reply Dave 1/25/2008 3:21:43 PM

On Jan 25, 11:09=A0am, "jbwest" <jbw...@comcast.net> wrote:
> "teju" <rao.tejasw...@gmail.com> wrote in message
>
> news:2b4fea7a-187b-4386-a36e-3c234d9280c2@s13g2000prd.googlegroups.com...
>
>
>
>
>
>
>
> > fungus wrote:
> >> On Jan 24, 10:30 am, teju <rao.tejasw...@gmail.com> wrote:
>
> >> > but even the above code works fine and "wglCreatePbufferARB" function=

> >> > is not NULL but still =A0fails...
>
> >> In that case your wglChoosePixelFormat is wrong.
>
> >> --
> >> <\___/>
> >> / O O \
> >> \_____/ =A0FTB. =A0 =A0 Remove my socks for email address.
>
> > i have posted the code...can u tell me where i have gone wrong
>
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0g_pbuffer.hPBuffer =3D NULL;
> > g_pbuffer.nWidth =A0 =3D PBUFFER_WIDTH;
> > g_pbuffer.nHeight =A0=3D PBUFFER_HEIGHT;
>
> > int pf_attr[] =3D
> > {
> > WGL_SUPPORT_OPENGL_ARB, TRUE,
> > WGL_DRAW_TO_PBUFFER_ARB, TRUE,
> > WGL_RED_BITS_ARB, 8,
> > WGL_GREEN_BITS_ARB, 8,
> > WGL_BLUE_BITS_ARB, 8,
> > WGL_ALPHA_BITS_ARB, 8,
> > WGL_DEPTH_BITS_ARB, 16,
> > WGL_DOUBLE_BUFFER_ARB, FALSE,
> > 0
> > };
>
> > unsigned int count =3D 0;
> > int pixelFormat;
>
> > wglChoosePixelFormatARB( g_hDC,(const int*)pf_attr, NULL, 1,
> > &pixelFormat, &count);
>
> > if( count =3D=3D 0 )
> > {
> > MessageBox(NULL,"Could not find an acceptable pixel format!",
> > "ERROR",MB_OK|MB_ICONEXCLAMATION);
> > exit(-1);
> > }
>
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0here count is having value 4.......af=
ter that when i
> > do this:
>
> > g_pbuffer.hPBuffer =3D wglCreatePbufferARB( g_hDC, pixelFormat,
> > g_pbuffer.nWidth, g_pbuffer.nHeight, NULL );
> > g_pbuffer.hDC =A0 =A0 =A0=3D wglGetPbufferDCARB( g_pbuffer.hPBuffer );
> > g_pbuffer.hRC =A0 =A0 =A0=3D wglCreateContext( g_pbuffer.hDC );
>
> > All functions are working I mean returning non zero values but still
> > g_pbuffer.hPBuffer is NULL...
>
> 16 bits is a bad choice for depth; use 24. I've found 16 can yield
> unexpected (software rendering, no creation) results.
> And, have you tried double buffer ? Width/Height no bigger than screen,
> right ? Probably can't be.
>
> and, fix your args to wglCreatePbufferARB -- last arg isn't NULL.
>
> Try to find a known-to-work pbuffer sample program & run it, verify it
> works, and reverse engineer.
>
> jbw- Hide quoted text -
>
> - Show quoted text -

i shifted to some other PC and now its creating the buffer and my
sample program works fine creating pbuffers ....

thanx,
teju
0
Reply teju 1/28/2008 10:46:54 AM

12 Replies
254 Views

(page loaded in 0.19 seconds)

Similiar Articles:


















7/23/2012 12:34:42 PM


Reply: