在 c++ 中强制使用 Opengl 2.0 及更高版本
Forcing Opengl 2.0 and above in c++
我是一名学习 c++ 和 opengl 的学生,现在已经学习了 5 个月,随着时间的推移,我们已经接触了一些高级主题,从基本的 opengl 开始,如 glBegin/glEnd 到 VA 到 VBO 再到着色器等。我们的教授让我们随着时间的推移从头等舱建立我们的图形引擎,他时不时地要求我们停止使用一个或另一个已弃用的功能并继续使用较新的版本。
现在,作为当前任务的一部分,他要求我们摆脱OpenGl ES 2.0之前的所有内容。我们的代码库相当大,我想知道我是否可以将 OpenGL 设置为 2.0 及更高版本,以便拥有这些已弃用的功能实际上会在编译时失败,这样我就可以确保所有这些功能都超出了我的引擎。
初始化 OpenGL 上下文时,可以将提示传递给上下文以请求特定的上下文版本。例如,使用 GLFW 库:
glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
GLFWwindow* window = glfwCreateWindow(res_width, res_height, window_name, monitor, NULL);
如果 OpenGL 库不支持 ES 2.0,这将失败(在 GLFW 的情况下,它将返回一个NULL
窗口)。您平台的原生 EGL(或 WGL、GLX、AGL 等)函数提供此功能。
相关文章:
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 在 C++11 及更高版本中,有没有办法初始化初始值设定项列表中的向量?
- 如何获得CMake Tools以在Visual Studio Code中编译具有C++11(或更高版本)功能的程序?
- 如何将_RICHEDIT_VER(riched20.dll)升级到版本3或更高版本
- 在 Visual Studio 2010(及更高版本)中定义包含或链接路径变量的位置
- C++14 及更高版本是否允许 Lambda 函数的默认参数?如果是这样,怎么办?
- 片段着色器中的"错误:在 GLSL 1.30 及更高版本中禁止使用非常量表达式索引的采样器数组"
- 在Mac OS X Mountain Lion(或更高版本)和Linux上使用X11/Xlib.h
- 对于我在 Microsoft Visual C++ IDE (2005 或更高版本)的本机 win32 项目中编写的应用
- 将用户输入绑定到UE4.22.3及更高版本中的UActorComponent方法
- 使用 C++17 或更高版本对向量中的元素对求和的最'functional'方法?
- 在C 11或更高版本中,是否可以通过Lambda来实现单方法纯Virtual C 接口
- 是 GCC 6.2 或更高版本中的 C++20 实验范围
- 切换到更高的 Boost 版本 1.6.1 时出现编译错误
- 如何在 CMake 3.7 及更高版本中表达 PGO 依赖项
- C++11及更高版本:shared_ptr,用于管理由低级C库提供的系统资源
- 如何在 CMake 目标上请求 C++11 或更高版本
- 如何在Windows和更高版本上保留内存,并将文件映射到内存中
- 谁能帮助我在 4.0 及更高版本上实现 Android Blur,而无需学习 Renderscript
- 如何使用OpenGL 2.0而不是更高的版本