小编Man*_*anu的帖子

有没有办法在GLFW中删除60 fps的上限?

我正在用C++写一个带OGL/GLFW的游戏.

我的游戏总是以60 fps运行,没有任何屏幕撕裂.在做了一些研究之后,似乎该glfwSwapInterval()功能应该能够启用/禁用V-sync或60fps上限.

但是,无论我传递给函数的值如何,帧速率都保持锁定在60并且没有任何撕裂.我还检查了linux和nvidia面板上的compositor设置,它们没有任何效果.

这是我认为常见的事情,有没有办法绕过这个fps上限?

c++ opengl frame-rate vsync glfw

6
推荐指数
1
解决办法
4145
查看次数

ImGui 与高兴的 openGL 加载程序抛出分段错误(核心转储)

我是 ImGui 库的新手,最近我一直在尝试其中包含的示例。一切都像魅力一样,直到我更改了(我想使用的加载器)gl3w的包含(和功能)。glad当我在两个加载器之间交换时,我在文件内遇到了分段错误异常imgui_impl_glfw_gl3.cpp。我发现一篇文章表明,这可能是由于某些函数无法“绑定”并产生空指针而发生的。

我发现错误在 第216行的代码中line 216imgui_impl_glfw_gl3.cpp

glGetIntegerv(GL_TEXTURE_BINDING_2D, &last_texture);
Run Code Online (Sandbox Code Playgroud)

我还将包含文件从 更改imgui_impl_glfw_gl3.cppgl3wglad但没有结果。

这是我正在执行的主要函数(这是使用glad的imgui的基本opengl3示例):

#include "gui/imgui.h"
#include "gui/imgui_impl_glfw_gl3.h"
#include <stdio.h>
#include <glad/glad.h>    // This example is using gl3w to access OpenGL functions (because it is small). You may use glew/glad/glLoadGen/etc. whatever already works for you.
#include <GLFW/glfw3.h>

static void error_callback(int error, const char* description)
{
    fprintf(stderr, "Error %d: %s\n", error, description);
}

int main(int, char**)
{
    // Setup …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glfw imgui glad

3
推荐指数
1
解决办法
6131
查看次数

有没有办法在不破坏窗口/上下文的情况下切换全屏?

我目前有一个使用 OGL 4.5 和 GLFW 3 的游戏。

我正在尝试创建一个允许在全屏和窗口模式之间切换的功能。然而,为了实现这一点,我似乎必须销毁当前窗口,然后在同一指针中创建一个新窗口(我在 GLFW 文档中将其红色)。

虽然这可行,并且我可以在两种模式之间进行交换,但一旦交换发生,它会导致引擎的一些关键部分停止绘制。

因此,我想知道是否有某种方法可以启用/禁用全屏而不破坏窗口并创建新窗口。

这是该函数的代码:

void TMooseEngine::toggleFullscreen()
{
    _fullscreen = !_fullscreen;

    glfwDestroyWindow(window);
    delete _shader;
    delete _skybox;
    //delete _particulas;




    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    if(_fullscreen){ //change to fullscreen
       window = glfwCreateWindow(_width, _height, "Fate Warriors", glfwGetPrimaryMonitor(), NULL);
       glfwMakeContextCurrent(window);
       glViewport(0,0,_width,_height);
       //culling
       glEnable(GL_DEPTH_TEST);
       glViewport(0,0,_width,_height);
       glEnable(GL_CULL_FACE);
       glCullFace(GL_BACK); 
       glFrontFace(GL_CCW);
       _shader = new Shader();
       _skybox = new Skybox();

       initUI();
    }

    else{ //change to windowed
        window = glfwCreateWindow(_width, _height, "Fate Warriors", NULL, NULL);
        glfwMakeContextCurrent(window);
        glViewport(0,0,_width,_height);
        //culling
        glEnable(GL_DEPTH_TEST);
        glViewport(0,0,_width,_height);
        glEnable(GL_CULL_FACE); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl fullscreen windowed glfw

2
推荐指数
1
解决办法
2064
查看次数

标签 统计

c++ ×3

glfw ×3

opengl ×3

frame-rate ×1

fullscreen ×1

glad ×1

imgui ×1

vsync ×1

windowed ×1