我有一个简单的应用程序,显示了一个使用 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 不能“只显示缓冲区”。