GLFW와 GLEW를 사용하여 C++을 통해 게임을하고 있습니다. GLEW를 구현할 때까지 모든 것이 잘 진행되었지만 이전에 결코 경험하지 못했던 오류가 발생했습니다. 무엇을 해야할지, 나는 그것을 봤고 약간의 연구를했지만 아무 소용이 없습니다. 나는 스택 프레임 섹션에서 내 MAIN.CPPGLEW _First가 nullptr이었습니다
std::cout << glGetString(GL_VERSION) << std::endl;
에 코드 줄 함께 할 수있는 뭔가 또한 메모리 함께 할 수있는 뭔가가 말한다 말한다 것으로 나타났습니다. 나는 아래로 아래에있는 내 코드의 나머지 부분을 떠날거야 어떤 정보가 있다면 그냥 물어 필요하고 난 다음을
std::cout << glGetString(GL_VERSION) << std::endl;
을 꺼내 경우가
그래서 난 그냥 발견 제공하기 위해 최선을 다할 것입니다 그러나 창은 생성되지 않습니다.
여기에서 나는 어디로 가나 요? 아이디어가 있으십니까?
#include "src\graphics\window.h"
int main() {
using namespace benji;
using namespace graphics;
Window window("Benji Engine", 1280, 720);
glClearColor(0.2f, 0.3f, 0.8f, 1.0f);
std::cout << glGetString(GL_VERSION) << std::endl;``
while (!window.closed()) {
std::cout << window.getWidth() << ", " << window.getHeight() << std::endl;
window.clear();
glBegin(GL_TRIANGLES);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.0f, 0.5f);
glVertex2f(0.5f, -0.5f);
glEnd();
window.update();
}
return 0;
}
main.h
#pragma once
class main
{
public:
main();
~main();
};
window.cpp
#include "window.h"
namespace benji { namespace graphics {
void windowResize(GLFWwindow *window, int width, int height);
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 GLFW!" << std::endl;
return false;
}
m_Window = glfwCreateWindow(m_Width, m_Height, m_Title, NULL, NULL);
if (!m_Window) {
std::cout << "Failed to create GLFW window!" << std::endl;
return false;
}
glfwMakeContextCurrent(m_Window);
glfwSetWindowSizeCallback(m_Window, windowResize);
if (glewInit != GLEW_OK) {
std::cout << "GLEW FAILED!" << std::endl;
return false;
}
return true;
}
void Window::clear() const {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
void Window::update(){
glfwPollEvents();
glfwSwapBuffers(m_Window);
}
bool Window::closed() const {
return glfwWindowShouldClose(m_Window) == 1;
}
void windowResize(GLFWwindow *window, int width, int height) {
glViewport(0, 0, width, height);
}
}}
window.h
Window.cpp에서#pragma once
#include <iostream>
#include <GL\glew.h>
#include <GLFW\glfw3.h>
namespace benji {
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();
void clear() const;
int getWidth() const {
return m_Width;
}
int getHeight() const { return m_Height; }
private:
bool init();
};
}
}
전체 오류 란 무엇입니까? 그리고 디버그 호출 스택 또는 다른 정보가 있습니까? – ssell
내가 볼 수있는 유일한 오류는 예외 발생 : 읽기 액세스 위반입니다. _First는 nullptr입니다. –
'glGetString'이 참으로 부서지면 OpenGL이 제대로 초기화되지 않았기 때문입니다. 'Window :: init' 중에 오류 출력을 얻고 있습니까? 이것은 또한'glGetString'에 대한 호출을 제거 할 때 충돌이 일어나지 않지만 어떤 창이 열리지 않는다는 사실에 의해 지원됩니다. 또한 "왜 [glGetString (GL_VERSION)이 Seg 오류를 일으킬 수 있습니까?] (http://stackoverflow.com/questions/6288759/why-could-glgetstringgl-version-be-causing-a-seg-fault)" – ssell