OpenGL灰度纹理在一个屏幕上绘制,而不是另一个

时间:2013-07-21 18:44:59

标签: c++ winapi opengl

我有一个示例代码,使用QUADS为窗口绘制8位栅格(glTexImage2D w / GL_LUMINANCE设置为像素格式和内部格式)。

PFD初始化如下:

PIXELFORMATDESCRIPTOR pfd;
int iFormat;

hDC = GetDC( hWnd );

ZeroMemory( &pfd, sizeof( pfd ) );
pfd.nSize = sizeof( pfd );
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 8;
pfd.iLayerType = PFD_MAIN_PLANE;
iFormat = ChoosePixelFormat( hDC, &pfd );
SetPixelFormat( hDC, iFormat, &pfd );

纹理初始化如下:     glPixelStorei(GL_UNPACK_ALIGNMENT,1);

glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

glTexImage2D (GL_TEXTURE_2D, 0, GL_LUMINANCE, width, height, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, data);

本机由一张Matrox卡组成,可连接一台普通彩色显示器和两台单色显示器。

问题是,应用程序会进入彩色监视器中窗口的任何部分,但在单色监视器上会出现空白。它们在控制面板中配置为8位线性灰度,否则可以正常工作。

很高兴听到你的想法...

0 个答案:

没有答案