如何替换以下(已弃用)OpenGL函数
How to replace following (deprecated) OpenGL functions?
我有一个简单的应用程序,显示了使用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不能"只显示缓冲区"。
我必须自己回答这个问题。经过长时间的研究,我终于找到了这个案子。这个答案完美地解释了发生了什么。此外,我在Qt下载部分不知何故错过了这个:
默认情况下,Windows脱机安装程序是基于ANGLE的。
简而言之,是什么导致了更复杂的解释:
Windows上的Qt 5可以配置为使用OpenGL驱动程序,或者通过ANGLE库的DirectX驱动程序。
我很惊讶这么少(一个?)so的答案提到了这一点。上下文、四边形、着色器有很多可怕的东西,但解决方案非常简单。希望它能帮助到别人。
相关文章:
- GLEW 未在 MSYS2 上定位 OpenGL 函数
- CMake 子项目不能调用 OpenGL 函数,但父项目可以
- EGL 在第一次 opengl 函数调用时崩溃
- 我是否需要这些 OpenGL 函数末尾的"3f"?
- 使用 QOpenGLWidget 加载 OpenGL 函数指针
- opengl32.lib如何在Windows(仅1.1版本)上工作?它是否真正实现了OpenGL函数
- 类中的 OpenGL 函数
- 加载的 OpenGL 函数是特定于上下文还是特定于线程?(视窗)
- SFML 环境中缺少 OpenGL 函数
- 为什么内联函数会导致编译器看不到OpenGL函数
- 加载 OpenGL > 1.1 函数窗口
- 手动检索和存储指向 OpenGL 函数的指针时遇到问题
- 在未加载上下文的情况下在对象构造函数中使用OpenGL函数
- 在 Linux 上的 Qt 5.4 中使用某些 OpenGL 函数
- OpenGL函数在VS2012 express中未定义
- 我可以在代码中明确禁用不推荐使用的OpenGL函数吗
- 如何替换以下(已弃用)OpenGL函数
- glxCreateContextAttribsARB和OpenGL函数在linux上的动态加载
- 调用OpenGL函数时程序崩溃
- OpenGL函数未定义glow