当前位置: 首页 > 知识库问答 >
问题:

OpenGL glfw黑色窗口

邓德厚
2023-03-14

我对glfw有一个小问题。

我的代码非常简单,我只想创建一个空窗口。

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>

int main(void) {


// initialise the windows
GLFWwindow *window;

if (!glfwInit()) {

    return -1;
}

// create  a windows

window = glfwCreateWindow(640, 480, "Test", NULL, NULL);
if (!window) {
    fprintf(stderr, "Failed to initialize GLFW\n");
    glfwTerminate();
    return -1;
}


// make the window's current context
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
// loop until the window close

while (!glfwWindowShouldClose(window)) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    // swap back and front buffers

    glfwSwapBuffers(window);


    // poll the events

    glfwPollEvents();
}

std::cout << "finished ";
glfwTerminate();

return 0;

}

此代码编译,但当我运行它时,我只有一个白色窗口。窗口的标题是正确的,但里面的一切都是白色的......我尝试像那样使用glClearColor。

while (!glfwWindowShouldClose(window)) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(1, 1, 0, 0);

但是我的窗户仍然是白色的....我用的是visual studio 2015。

怎么弄个黑窗?

编辑:

忘了补充这个:glfwMakeContextCurrent(window);

共有1个答案

百里丁雨
2023-03-14

对于未来的访问者,我将编辑作为正式答案发布。

这里缺少的是通过调用< code > glfwMakeContextCurrent(window)将新创建的窗口设置为当前的OpenGL上下文;

有趣的是,代码中的注释表明您正在这样做

< code>//成为窗口的当前上下文

但是,您不会调用上面的方法,而是立即设置背景颜色。如果您在此注释之后和设置背景颜色之前添加上述方法调用,那么当我运行您的代码时,它可以正常工作。

 类似资料:
  • 我正在为平台游戏做教程,但我的Pygame窗口显示一个黑屏。 我不知道怎么解决这个问题。 我尝试再次关闭和打开Visual Studio Code,但没有任何结果。

  • 我正在写一个简单的mandelbrot渲染器。在程序计算并绘制所有内容后,它将保存曲面并进行blits。这很好,但在我添加了更新显示功能后,它只显示一个黑屏。我需要更新每次迭代,因为我将添加一些文本和其他内容。我只包括了节目的重要部分。有人知道为什么会这样吗?

  • 有人知道这个黑色矩形是什么吗?这是我的主要任务。py: 这是我的马里奥。py: 最后,我的levels.py: 我使用的是Windows10计算机,python版本为3.8。3和pygame版本1.9。6.

  • 我运行以下代码: 当我运行代码时,pygame窗口打开,但它是一个空白(黑色)屏幕。我还收到以下错误消息:Traceback(最近一次呼叫last): 文件"C:/用户/Draco/OneDrive/文档/编程/graphics.py",第13行,screen.blit(img(0,0))TypeError:'pyplay.Surface'对象不可调用 我试图打开的图像保存为JPG文件。图像保存在

  • 我正在用pyplay写一个蛇游戏,但我只是提示一个黑色的窗口没有任何错误。 我检查了类似的问题,他们错误地使用了screen对象。然而,这里的情况似乎不是这样,因为它只创建了一次? 知道我做错了什么吗?因为我没有收到任何错误信息,所以我不明白为什么只显示一个黑屏。按键输入事件工作正常。

  • 当我运行此代码时,它会显示一个空白的黑色窗口,并显示未定义。 这不是颜色,它没有画任何线强硬我给的命令 我的错误是什么,阻止我将屏幕变白并引发错误?