OpenGL Stereoscopic Display with 3D Vision and Samsung LCD Shutter Glass and display synch
I am developing my own stereoscopic 3D viewer using OpenGL with 380 card.
The nVidia Photo viewer works fine, but my own photo viewer has severe crosstalk, i.e. the left and right eyes are not in good
sync with the shutter glasses. The following are the major set up in MFC environment.

Can anybody help?

Thanks

Gary

Pixel format set up.

static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_STEREO | PFD_SUPPORT_GDI,
PFD_TYPE_RGBA ,
32, // bit depth
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
16, // z-buffer depth
0, 0, 0, 0, 0, 0, 0,
};

// Get device context only once.
hdc = GetDC()->m_hDC;

// Pixel format.
m_nPixelFormat = ChoosePixelFormat(hdc, &pfd);
SetPixelFormat(hdc, m_nPixelFormat, &pfd);

// Create the OpenGL Rendering Context.
hrc = wglCreateContext(hdc);
wglMakeCurrent(hdc, hrc);


Rendering Part.

/////////////////////////////////////////////////////
glDrawBuffer(GL_BACK_LEFT);
glClear(GL_COLOR_BUFFER_BIT);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glRasterPos2i(x0, y0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glDrawPixels(g_img_width, g_img_height, GL_BGR_EXT, GL_UNSIGNED_BYTE, gp_img_left);

////////////////////////////////////////////////////
glDrawBuffer(GL_BACK_RIGHT);
glClear(GL_COLOR_BUFFER_BIT);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glRasterPos2i(x0, y0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glDrawPixels(g_img_width, g_img_height, GL_BGR_EXT, GL_UNSIGNED_BYTE, gp_img_right);

SwapBuffers(hdc);
I am developing my own stereoscopic 3D viewer using OpenGL with 380 card.

The nVidia Photo viewer works fine, but my own photo viewer has severe crosstalk, i.e. the left and right eyes are not in good

sync with the shutter glasses. The following are the major set up in MFC environment.



Can anybody help?



Thanks



Gary



Pixel format set up.



static PIXELFORMATDESCRIPTOR pfd =

{

sizeof(PIXELFORMATDESCRIPTOR),

1,

PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_STEREO | PFD_SUPPORT_GDI,

PFD_TYPE_RGBA ,

32, // bit depth

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

16, // z-buffer depth

0, 0, 0, 0, 0, 0, 0,

};



// Get device context only once.

hdc = GetDC()->m_hDC;



// Pixel format.

m_nPixelFormat = ChoosePixelFormat(hdc, &pfd);

SetPixelFormat(hdc, m_nPixelFormat, &pfd);



// Create the OpenGL Rendering Context.

hrc = wglCreateContext(hdc);

wglMakeCurrent(hdc, hrc);





Rendering Part.



/////////////////////////////////////////////////////

glDrawBuffer(GL_BACK_LEFT);

glClear(GL_COLOR_BUFFER_BIT);

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glRasterPos2i(x0, y0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glDrawPixels(g_img_width, g_img_height, GL_BGR_EXT, GL_UNSIGNED_BYTE, gp_img_left);



////////////////////////////////////////////////////

glDrawBuffer(GL_BACK_RIGHT);

glClear(GL_COLOR_BUFFER_BIT);

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glRasterPos2i(x0, y0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();



glDrawPixels(g_img_width, g_img_height, GL_BGR_EXT, GL_UNSIGNED_BYTE, gp_img_right);



SwapBuffers(hdc);

#1
Posted 01/11/2010 11:34 PM   
[quote name='gzhang207' post='979660' date='Jan 11 2010, 11:34 PM']I am developing my own stereoscopic 3D viewer using OpenGL with 380 card.
The nVidia Photo viewer works fine, but my own photo viewer has severe crosstalk, i.e. the left and right eyes are not in good
sync with the shutter glasses. The following are the major set up in MFC environment.

Can anybody help?

Thanks

Gary[/quote]

Hi Gary,

I'm also trying the same thing. I've read that someone use the extension wglSwapIntervalEXT
to sync the two images during glSwapBuffer.
Btw, which graphic card are you using? 380, you mean gtx 280?
I've observe that in my 285 I'm not able to set the PFD_STEREO flag...
did you already solve this problem?


Thanks
[quote name='gzhang207' post='979660' date='Jan 11 2010, 11:34 PM']I am developing my own stereoscopic 3D viewer using OpenGL with 380 card.

The nVidia Photo viewer works fine, but my own photo viewer has severe crosstalk, i.e. the left and right eyes are not in good

sync with the shutter glasses. The following are the major set up in MFC environment.



Can anybody help?



Thanks



Gary



Hi Gary,



I'm also trying the same thing. I've read that someone use the extension wglSwapIntervalEXT

to sync the two images during glSwapBuffer.

Btw, which graphic card are you using? 380, you mean gtx 280?

I've observe that in my 285 I'm not able to set the PFD_STEREO flag...

did you already solve this problem?





Thanks

#2
Posted 02/01/2010 05:19 PM   
[quote name='jhano' post='993286' date='Feb 1 2010, 11:19 AM']Hi Gary,

I'm also trying the same thing. I've read that someone use the extension wglSwapIntervalEXT
to sync the two images during glSwapBuffer.
Btw, which graphic card are you using? 380, you mean gtx 280?
I've observe that in my 285 I'm not able to set the PFD_STEREO flag...
did you already solve this problem?


Thanks[/quote]

jhano,

It has to be a Quadro card. The GeForce GTX 285 will not work.
[url="http://www.nvidia.com/object/quadro_pro_graphics_boards.html"]NVIDIA 3D Vision for Quadro[/url]
[quote name='jhano' post='993286' date='Feb 1 2010, 11:19 AM']Hi Gary,



I'm also trying the same thing. I've read that someone use the extension wglSwapIntervalEXT

to sync the two images during glSwapBuffer.

Btw, which graphic card are you using? 380, you mean gtx 280?

I've observe that in my 285 I'm not able to set the PFD_STEREO flag...

did you already solve this problem?





Thanks



jhano,



It has to be a Quadro card. The GeForce GTX 285 will not work.

NVIDIA 3D Vision for Quadro

#3
Posted 02/02/2010 06:06 PM   
[quote name='gzhang207' post='979660' date='Jan 11 2010, 05:34 PM']I am developing my own stereoscopic 3D viewer using OpenGL with 380 card.
The nVidia Photo viewer works fine, but my own photo viewer has severe crosstalk, i.e. the left and right eyes are not in good
sync with the shutter glasses. The following are the major set up in MFC environment.

Can anybody help?

Thanks

Gary

Pixel format set up.

static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_STEREO | PFD_SUPPORT_GDI,
PFD_TYPE_RGBA ,
32, // bit depth
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
16, // z-buffer depth
0, 0, 0, 0, 0, 0, 0,
};

// Get device context only once.
hdc = GetDC()->m_hDC;

// Pixel format.
m_nPixelFormat = ChoosePixelFormat(hdc, &pfd);
SetPixelFormat(hdc, m_nPixelFormat, &pfd);

// Create the OpenGL Rendering Context.
hrc = wglCreateContext(hdc);
wglMakeCurrent(hdc, hrc);


Rendering Part.

/////////////////////////////////////////////////////
glDrawBuffer(GL_BACK_LEFT);
glClear(GL_COLOR_BUFFER_BIT);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glRasterPos2i(x0, y0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glDrawPixels(g_img_width, g_img_height, GL_BGR_EXT, GL_UNSIGNED_BYTE, gp_img_left);

////////////////////////////////////////////////////
glDrawBuffer(GL_BACK_RIGHT);
glClear(GL_COLOR_BUFFER_BIT);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glRasterPos2i(x0, y0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glDrawPixels(g_img_width, g_img_height, GL_BGR_EXT, GL_UNSIGNED_BYTE, gp_img_right);

SwapBuffers(hdc);[/quote]

Gary,

This looks similar to what we use except we don't set PFD_SUPPORT_GDI. I found the latest 191.78 driver doesn't work well with our software. Only the middle of the screen will show good stereo, the top and bottom thirds of the screen will have severe crosstalk. I had to go back to the 191.00 driver to get decent results.
[quote name='gzhang207' post='979660' date='Jan 11 2010, 05:34 PM']I am developing my own stereoscopic 3D viewer using OpenGL with 380 card.

The nVidia Photo viewer works fine, but my own photo viewer has severe crosstalk, i.e. the left and right eyes are not in good

sync with the shutter glasses. The following are the major set up in MFC environment.



Can anybody help?



Thanks



Gary



Pixel format set up.



static PIXELFORMATDESCRIPTOR pfd =

{

sizeof(PIXELFORMATDESCRIPTOR),

1,

PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_STEREO | PFD_SUPPORT_GDI,

PFD_TYPE_RGBA ,

32, // bit depth

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

16, // z-buffer depth

0, 0, 0, 0, 0, 0, 0,

};



// Get device context only once.

hdc = GetDC()->m_hDC;



// Pixel format.

m_nPixelFormat = ChoosePixelFormat(hdc, &pfd);

SetPixelFormat(hdc, m_nPixelFormat, &pfd);



// Create the OpenGL Rendering Context.

hrc = wglCreateContext(hdc);

wglMakeCurrent(hdc, hrc);





Rendering Part.



/////////////////////////////////////////////////////

glDrawBuffer(GL_BACK_LEFT);

glClear(GL_COLOR_BUFFER_BIT);

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glRasterPos2i(x0, y0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glDrawPixels(g_img_width, g_img_height, GL_BGR_EXT, GL_UNSIGNED_BYTE, gp_img_left);



////////////////////////////////////////////////////

glDrawBuffer(GL_BACK_RIGHT);

glClear(GL_COLOR_BUFFER_BIT);

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glRasterPos2i(x0, y0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();



glDrawPixels(g_img_width, g_img_height, GL_BGR_EXT, GL_UNSIGNED_BYTE, gp_img_right);



SwapBuffers(hdc);



Gary,



This looks similar to what we use except we don't set PFD_SUPPORT_GDI. I found the latest 191.78 driver doesn't work well with our software. Only the middle of the screen will show good stereo, the top and bottom thirds of the screen will have severe crosstalk. I had to go back to the 191.00 driver to get decent results.

#4
Posted 02/02/2010 09:00 PM   
Scroll To Top