使用 GLFW 生成 window,背景颜色未更改
Generated window with GLFW, background color not changing
我正在尝试更改 OpenGL/GLFW 生成的 window 中的背景颜色,并且我使用的代码与 GLFW 文档中的代码类似。我在 Ubuntu 20.04 上 window 背景总是黑色,无论 glClearColor() 函数中的参数如何。
我在 Windows 10 上使用 VS 试过这个,它工作得很好,但在 Ubuntu 上它根本不起作用。没有生成错误消息。
我也关注了 Cherno 的 Sparky 游戏引擎系列,并尝试将 glClear() 函数封装在 class 方法中,但这并没有改变任何东西。
这是完整的代码:
#include <iostream>
#include <GL/gl.h>
#include <GLFW/glfw3.h>
int main(int argc, char *argv[])
{
std::cout << "Hello world!" << std::endl;
if (!glfwInit())
{
// Initialization failed
exit(EXIT_FAILURE);
}
GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
if (!window)
{
// Window or OpenGL context creation failed
std::cout << "Error creating window!" << std::endl;
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
while (!glfwWindowShouldClose(window))
{
int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
return 0;
}
我应该得到一个红色背景的 window,但它是黑色的。
作为附加元素,我还使用 CMake 来帮助配置和构建项目(我知道这太过分了),我相信 clang 是用于该项目的编译器。也许这会影响结果。
glfwMakeContextCurrent(window)
后你需要一个合适的加载器。
如果您正在使用 glad,您应该按照官方文档的建议 here 在 glfwMakeContextCurrent(window)
之后调用 gladLoadGL(glfwGetProcAddress)
。
我正在尝试更改 OpenGL/GLFW 生成的 window 中的背景颜色,并且我使用的代码与 GLFW 文档中的代码类似。我在 Ubuntu 20.04 上 window 背景总是黑色,无论 glClearColor() 函数中的参数如何。
我在 Windows 10 上使用 VS 试过这个,它工作得很好,但在 Ubuntu 上它根本不起作用。没有生成错误消息。
我也关注了 Cherno 的 Sparky 游戏引擎系列,并尝试将 glClear() 函数封装在 class 方法中,但这并没有改变任何东西。
这是完整的代码:
#include <iostream>
#include <GL/gl.h>
#include <GLFW/glfw3.h>
int main(int argc, char *argv[])
{
std::cout << "Hello world!" << std::endl;
if (!glfwInit())
{
// Initialization failed
exit(EXIT_FAILURE);
}
GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
if (!window)
{
// Window or OpenGL context creation failed
std::cout << "Error creating window!" << std::endl;
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
while (!glfwWindowShouldClose(window))
{
int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
return 0;
}
我应该得到一个红色背景的 window,但它是黑色的。
作为附加元素,我还使用 CMake 来帮助配置和构建项目(我知道这太过分了),我相信 clang 是用于该项目的编译器。也许这会影响结果。
glfwMakeContextCurrent(window)
后你需要一个合适的加载器。
如果您正在使用 glad,您应该按照官方文档的建议 here 在 glfwMakeContextCurrent(window)
之后调用 gladLoadGL(glfwGetProcAddress)
。