在对代码运行了几次测试之后,我已经确定GLFW和GLEW都已成功初始化,但是当我尝试创建一个GLFWwindow*
对象以用于GLFW函数时,glfwCreateWindow()
函数返回一个nullptr
。为什么会这样,我该如何解决?这是我的代码:
#include <iostream>
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>
const GLuint windowWidth = 500, windowHeight = 500;
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow* window = glfwCreateWindow(windowWidth, windowHeight, "Learn OpenGL", nullptr, nullptr);
if (window == nullptr) {
std::cout << "Failed to create GLFW window!" << std::endl;
char myvar1; std::cin >> myvar1;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
if (glewInit() != GL_TRUE) {
std::cout << "Failed to initialize GLEW" << std::endl;
char myvar2; std::cin >> myvar2;
return -1;
}
glViewport(0, 0, windowWidth, windowHeight);
while (!glfwWindowShouldClose(window)) {
glfwPollEvents();
glfwSwapBuffers(window);
}
glfwTerminate();
return 0;
}
这可能是因为您正在为上下文创建指定3.3版,而您的opengl版本低于3.3版。
OpenGL:GLFW_CONTEXT_VERSION_MAJOR和GLFW-CONTEXT_ VERSION_ MINOR不是硬约束,但如果创建的上下文的OpenGL版本小于html" target="_blank">请求的版本,则创建将失败。
如果您使用的是具有2个GPU的笔记本电脑,则可能会发生这种情况。出于功耗原因,他们这样做是出于功耗的原因,大多数应用程序将使用标准GPU运行,例如对于游戏,它将使用高性能GPU。
例如,我的笔记本电脑有一个内置的Intel(R)HDGraphics 3000(3.1 opengl版本)GPU和一个NVIDIA geforce gt630M(4.4 opengl版本)GPU。
如果您右键单击应用程序快捷方式并拥有“使用图形处理器运行”选项,则可以查看笔记本电脑是否具有此功能: - “高性能(NVIDIA)处理器” - “集成图形(默认)”
问题是编辑器(eclipse/ms visual studio等)(在其中运行代码)将使用默认版本,并且通常具有比其他GPU低得多的opengl版本。
您可以通过始终使用高性能GPU运行编辑器程序来解决此问题。
如果您不使用笔记本电脑或只有一个GPU,请尝试更新您的驱动程序。
我正在使用GLFW,只想打开一个空窗口。 我下载了适用于Windows 32的GLFW。创建了一个空控制台项目并编写了以下代码: 我认为我正确地添加了库和头文件。但是每次程序在glfwCreateWindow(..)函数,因为这个函数返回null。 有人能帮我吗?
我在Xcode10.0 Mac OS 10.14上用glew2.1和glfw3.2做OpenGL作业,但是glfwCreateWindow总是返回NULL。代码如下: 如果我删除4 glfwWindowHint句子,将显示一个窗口,但它是黑暗的,并且Xcode控制台将抛出一个错误:设置为窗口的第一响应者,但它在另一个窗口中((空))!当视图被释放时,这最终会崩溃。第一个响应程序将设置为 nil。
我有一个CSV数据集,我试图通过它在数据库中已经存在的两个节点类型(和)之间建立关系。 这是数据库信息- 问题是--无论我尝试哪个密码查询,它们都返回相同的东西--“无更改,无行”。 此查询只返回“no rows”。 我还尝试了该查询的一个变体,其中我没有使用函数,但这并没有什么不同。 为了确保节点存在,我从CSV文件中选择了随机单元格值,并使用子句来确保数据库中存在相应的和节点,并且找到了所有节
我将如何在C#中为以下内容创建一个方法。 如果是奇数,则应返回整数/2。如果是偶数,则应返回自身相乘的整数。如果该整数为null,则应返回12345。 任何帮助都将不胜感激谢谢
当我在Linux上调用时,它返回。相同的代码适用于Windows,并且我安装了适当的图形驱动程序。如何确定它返回 null 的原因? 编辑:结果它返回了null,因为我要求的OpenGL版本显然在我的上网本上不可用。这解决了我的问题,但没有真正回答我的问题。
因此,我创建了我的对象数组,每个对象都被初始化为一个新字节[1024]: 然后,我遍历这个数组中的所有索引,执行如下操作: 在大多数情况下,一切都很好。但是,如果我希望每个字节数组都是可变长度的呢?也就是说,我希望字节数组的数组是“锯齿状”的。我将什么作为最后一个参数传递给NewObjectArray()作为初始值?我尝试传递0作为初始值,以防止在创建jobjectArray时进行初始化,然后分配