Opengl 不同显示模式下的渲染结果完全不同?

Opengl 不同显示模式下的渲染结果完全不同?,opengl,Opengl,我很久以前就有这个问题,最近我得到了一些线索,但仍然不是很清楚 我基本上是使用深度测试来渲染现有图形的纹理。该功能在nvdia图形卡下运行良好,但在intel图形卡上运行不正常(有时图像不稳定,有时甚至出现问题) 首先,我认为这可能是卡的问题。最近我发现,如果我在choosepixelformat中更改了显示模式,它在intel卡上也能正常工作 我还尝试了getpixelformat函数选择的模式,并猜测这可能是由于深度精度问题,我尝试了opengl常见问题解答中推荐的一些技术,但没有成功。我尝

我很久以前就有这个问题,最近我得到了一些线索,但仍然不是很清楚

我基本上是使用深度测试来渲染现有图形的纹理。该功能在nvdia图形卡下运行良好,但在intel图形卡上运行不正常(有时图像不稳定,有时甚至出现问题)

首先,我认为这可能是卡的问题。最近我发现,如果我在choosepixelformat中更改了显示模式,它在intel卡上也能正常工作

我还尝试了getpixelformat函数选择的模式,并猜测这可能是由于深度精度问题,我尝试了opengl常见问题解答中推荐的一些技术,但没有成功。我尝试了几种RGBA显示模式,它们是(仅使用带有双缓冲区的模式,它们是2,4,6,9,10,13,14):

正确显示的模式有2、9、10、13、14。失败的是4,6。windows选择模式4

谁能给我一些提示

谢谢你的评论,在这里我添加了糟糕的渲染&好的渲染图片在同一台机器上。一个是模式4,一个是模式10:

对不起!系统不允许我在此处粘贴图像

贴在这里的坏的只是其中之一,有些可能会显示其他奇怪的图片

部分代码: OpenGL初始化

    m_pDC = new CClientDC(this);
//m_pDC = new CPaintDC(this);
m_hDC=m_pDC->GetSafeHdc();

static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
1, // version number
 PFD_DRAW_TO_WINDOW | // support window
 PFD_SUPPORT_OPENGL | // support OpenGL
 PFD_DOUBLEBUFFER, // double buffered
 PFD_TYPE_RGBA, // RGBA type
 24, // 24-bit color depth
 0, 0, 0, 0, 0, 0, // color bits ignored
 0, // no alpha buffer
 0, // shift bit ignored
 0, // no accumulation buffer
 0, 0, 0, 0, // accum bits ignored
 16, // 16-bit z-buffer
 0, // no stencil buffer
 0, // no auxiliary buffer
 PFD_MAIN_PLANE, // main layer
 0, // reserved
 0, 0, 0 // layer masks ignored
 };
 int m_PixelFormat;
 //we may need to rewrite this function since it does not need the alpha bits
 m_PixelFormat = ::ChoosePixelFormat(m_hDC, &pfd);

 ::SetPixelFormat(m_hDC, m_PixelFormat, &pfd);
//::SetPixelFormat(m_hDC, 10, &pfd);
//
m_hRC = ::wglCreateContext( m_hDC );
wglMakeCurrent( m_hDC, m_hRC ); 

wglMakeCurrent(NULL,NULL);

return TRUE;
渲染在WM_PAINT message函数中: ::glEnable(GLU深度测试); ::glPolygonMode(GL\u前和后,GL\u填充)

绘图功能如下所示:

gluPerspective(90, width/height, 0.001, height/1);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

gluLookAt(cx,cy,cz,cx,cy,0,0,1,0);
然后在这里画地图。。。。。。 glDisable(GL_纹理_2D)

然后在这里画线和其他对象


所有对象都是2D顶点格式,没有任何3D深度值。

我忘了把这个问题的答案放回去。事实证明,这是一个英特尔卡硬件加速的问题。我试图通过选择软件渲染来关闭硬件加速,但问题消失了。

您对问题的描述非常模糊。请提供一些代码和渲染过程中确切步骤的说明。另外,截图也不错。
::glViewport( 0, 0, rcClient.Width() , rcClient.Height() );

     ....
    draw(...);
gluPerspective(90, width/height, 0.001, height/1);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

gluLookAt(cx,cy,cz,cx,cy,0,0,1,0);
glDisable(GL_DEPTH_TEST);