我正在尝试按照游戏引擎教程进行操作,当视频运行此代码时,它会打开一个窗口。当我这样做时,它会给出错误信息,以防万一没有创建窗口。
#include "window.h"
namespace sparky {
namespace graphics {
Window::Window(const char *title, int width, int height) {
m_Title = title;
m_Width = width;
m_Height = height;
if (!init())
glfwTerminate();
}
Window::~Window()
{
glfwTerminate();
}
bool Window::init()
{
if (!glfwInit) {
std::cout << "Failed To Initialize" << std::endl;
return false;
}
m_Window = glfwCreateWindow(m_Width, m_Height, m_Title, NULL, NULL);
if (!m_Window)
{
std::cout << "Window Not Created" << std::endl;
return false;
}
glfwMakeContextCurrent(m_Window);
return true;
}
bool Window::closed() const
{
return glfwWindowShouldClose(m_Window);
}
void Window::update() const
{
glfwPollEvents();
glfwSwapBuffers(m_Window);
}
}
}
这是我在window.cpp中的代码,我得到的窗口没有创建错误行,这是我的window.h。
#pragma once
#include <GLFW/glfw3.h>
#include <iostream>
namespace sparky {
namespace graphics {
class Window {
private:
const char* m_Title;
int m_Width, m_Height;
GLFWwindow *m_Window;
bool m_Closed;
public:
Window(const char* title, int width, int height);
~Window();
bool closed() const;
void update() const;
private:
bool init();
};
}
}
和我的主要班级
#include <GLFW/glfw3.h>
#include <iostream>
#include "src/graphics/window.h"
int main() {
using namespace sparky;
using namespace graphics;
Window window("Sparks Fly", 800, 600);
while (!window.closed()) {
window.update();
}
system("PAUSE");
return 0;
}
答案 0 :(得分:0)
你的问题在于这一行:
if (!glfwInit) {
由于glfwInit
是一个库函数,因此它(假设您已正确链接)始终具有不是nullptr
的有效地址。因此,!glfwInit
会将其更改为false
,并在世界范围内谨慎处理if语句。
这可以通过简单地调用函数来修复,而不是将其转换为布尔值:
if(!glfwInit()) {