3

我有一个简单的应用程序,显示了一个使用 OpenGL 的自定义帧缓冲区(它是帧缓冲区功能的模拟器):

void GLWidget::resizeGL( int w, int h )
{
    glViewport( 0, 0, w, h );
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    glOrtho( 0, w, 0, h, -1, 1 );
}

void GLWidget::paintGL()
{
    if( pScreen != 0 )
    {
        glRasterPos2i( 0, 2 * pScreen->height );
        glPixelZoom( 2, -2 );
        glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
        glDrawPixels( pScreen->width, pScreen->height, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, pScreen->pixels );
    }
}

真的,这就是我想做的全部,没有着色器,没有花哨的技巧,只是双倍缩放和显示。这段代码已有多年历史,在将其移植到 Windows 时,我注意到它不会再编译了。首先我认为这是 Windows 特有的东西,但后来我意识到它实际上是新的 OpenGL Windows 7 附带的(不像我每天使用的 Arch Linux)。

那么该怎么办呢?我真的不想为矩阵的东西安装一个自定义的数学库,我不敢相信最新的 OpenGL 不能“只显示缓冲区”。

4

1 回答 1

2

我必须自己回答这个问题。经过长时间的研究,我终于找到了案例。这个答案完美地解释了发生了什么。另外,我在Qt 下载部分以某种方式错过了这个:

默认情况下,Windows 离线安装程序基于 ANGLE。

简而言之,是什么导致了更复杂的解释

Windows 上的 Qt 5 可以通过 ANGLE 库配置为使用 OpenGL 驱动程序或 DirectX 驱动程序。

我很惊讶这么少(一个?)SO答案提到这一点。很多关于上下文、四边形、着色器的可怕东西,但解决方案非常简单。希望它会帮助某人。

于 2013-07-24T00:17:10.030 回答