THIS LINK的Folowing在DirectX中,我可以简单地添加以下行:
#include <d3d11.h>
#include <d3dx11.h>
#include <d3dx10.h>
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")
...
指定我想编写的'最新'DX版本。如何在OpenGL中实现这一点,以便我可以确保在编码时使用最新的GL库。我应该#define
我在代码中使用的某些东西或我的GL函数是否决定了OpenGL的版本?
c ++或其他软件中是否有方法可以告诉我的.exe程序使用的是什么版本的openGL?
答案 0 :(得分:5)
这不是OpenGL的工作原理; OpenGL不是你静态链接的东西(或者更确切地说,那不是所有你必须做的事情)。你必须(一般来说)dynamically load the OpenGL functions you work with。这通常是通过使用某种OpenGL loading library来完成的,因此将其减少为#including标头并在初始化期间调用函数(在创建OpenGL上下文之后)。
您使用的OpenGL的“版本”取决于您的实现支持的版本以及您选择使用的功能/枚举。如果您的代码是针对OpenGL 3.3编写的,但您的实现支持4.1,那很好;它向后兼容3.3。
有ask which OpenGL version of OpenGL is being provided的方法,但这是运行时查询,而不是编译时构造。您可以在上下文创建时显式请求一个版本(大于或等于您要求的版本),如果该版本不受实现支持,将导致上下文创建失败。
这使您的代码更灵活。例如,您可以编写程序的可选部分,这些部分可以提供更多功能,例如,如果OpenGL 4.1可用,但默认为3.3。您将不必使用两个(某种程度上)不同的API,或构建合并其公共元素的抽象。您只需在代码中的某个位置验证4.1是否已提供,如果是,则调用其他一些函数。否则,你做3.3的东西。