MFC之OpenGL 纹理贴图后再绘制线条两个颜色相互影响

    OpenGL渲染方式比GDI+强太多了,所以做绘图操作时我选择了OpenGL(新手),但是我在纹理贴图时出现了这样一个问题,就是我在贴完图后再继续在绘制线条什么的最后::SwapBuffers(hDC_); glFlush(); 也就是输出到显示器时纹理贴图的颜色竟然被线条的颜色影响了,如:

MFC之OpenGL 纹理贴图后再绘制线条两个颜色相互影响_第1张图片

MFC之OpenGL 纹理贴图后再绘制线条两个颜色相互影响_第2张图片

    而如果我只是贴图而不绘制线条就是没有用到glColor3f()重新设置颜色的时候贴图还是很好的,如:

MFC之OpenGL 纹理贴图后再绘制线条两个颜色相互影响_第3张图片

    百度了很久终于让我找到了一个解决的方法,也就是在glClear()之后先获取当前的颜色值fCurrentColor在最后输出之前还原,如:

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    // Clear Screen And Depth Buffer
    GLfloat fCurrentColor[4];
    glGetFloatv(GL_CURRENT_COLOR, fCurrentColor);

    ...

    glColor4fv(fCurrentColor);
    ::SwapBuffers(hDC_);
    glFlush();

MFC之OpenGL 纹理贴图后再绘制线条两个颜色相互影响_第4张图片

你可能感兴趣的:(MFC,OpenGL)