OpenGL和GL3W支持问题
OpenGL and GL3W support issues
GL3W的发出函数发生了一些奇怪的事情。当我调用isSupported(4, 0)
时,它返回false,这意味着不支持OpenGL 4.0。但是,当我致电glGetString(GL_VERSION)
时,它说OpenGL版本4.0。这是否意味着我可以使用OpenGL 4.0函数?
我在C 和Visual Studio 2017中使用GL3W
#include <GL/gl3w.h>
#include <GLFW/glfw3.h>
int main(int argc, char** argv){
if(!glfwInit()) {
FATAL_ERROR("Failed to initialise GLFW");
}
glfwSetErrorCallback(glfwErrorCallback);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGL", nullptr, nullptr);
//If i put glfwMakeContextCurrent here gl3wInit fails
//glfwMakeContextCurrent(window);
if (!window) {
glfwTerminate();
FATAL_ERROR("Window creation failed");
}
if(!gl3wInit()) {} // handle that
glfwMakeContextCurrent(window);
bool support = gl3wIsSupported(4, 0); // returns false
const char* version = glGetString(GL_VERSION); // return "4.0.0"
}
您必须在调用gl3wInit()
或常规openGL功能之前制作GL上下文当前电流
在OpenGL Wiki中您可以阅读:
GL3W库的重点关注OpenGL 3和4的核心配置文件。 仅加载这些OpenGL版本的核心入口点。它支持 Windows,Mac OS X,Linux和FreeBSD。
注意:GL3W加载核心OpenGL 默认情况下。如果 - ext 标志指定为gl3w_gen.py。
,这是在代码中查看的确认:
int gl3wIsSupported(int major, int minor)
{
if (major < 3) // <<<<=========== SEE THIS
return 0;
if (version.major == major)
return version.minor >= minor;
return version.major >= major;
}
您正在使用glfwWindowHint
询问旧的2.0版本。因此,gl3wIsSupported
将返回false
,gl3wInit
将返回GL3W_ERROR_OPENGL_VERSION
。
对于glGetString(GL_VERSION)
返回" 4.0"表示,是的,您可以使用该4.0版本。使用glfwWindowHint
要求。
我通过切换到高兴而修复了
if (!glfwInit()) {
FATAL_ERROR("Failed to initialise GLFW");
}
glfwSetErrorCallback(glfwErrorCallback);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGL", nullptr, nullptr);
if (!window) {
glfwTerminate();
FATAL_ERROR("Window creation failed");
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
glfwDestroyWindow(window);
glfwTerminate();
FATAL_ERROR("Failed to initialise OpenGL context");
}
PRINT("OpenGL Version: " << GLVersion.major << "." << GLVersion.minor);
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- 编译时未启用intel oneApi CUDA支持
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- ApplellVM 9.1.0具有C 17支持?还是CMAKE/ENV问题
- OpenGL和GL3W支持问题
- 如何解决Visual Studio 2012不支持显式转换运算符的问题
- 编译支持 OpenSSL 的 Windows Phone 8.1 Qt 5.5 时出现问题
- 嵌入式C++项目 - 需要支持智能指针.可能的可移植性问题
- CPPDEPEND.问题?发行说明?社区?支持
- 既然Qt3D说支持Linux,我该如何处理Linux上缺少window.h的问题
- 如何解决***缺少分隔符的问题.编译QT(或支持库)时
- 如何解决支持库中发生的分段错误问题
- 在windows 7上使用cuda5支持构建Opencv 2.4.3时出现nvcc问题