Wie der Titel sagt, bekomme ich eine "Access Verletzung Lesen Ort 0x000000000" Fehler auf meinem Laptop, aber der Code ist von der Youtube-Kurs und die anderen Leute haben kein Problem mit es. Was könnte ich tun, um das zu beheben? Code wird buchstäblich von der Quelle kopiert.Getting "Access Verletzung Lesestelle 0x000000000" Fehler
Problem tritt auf, wenn bekommt auf der Linie Kompilieren
if (_vboID == 0) {
glGenBuffers(1, &_vboID);
}
Code:
void MainGame::initSystems() {
//Initialize SDL
SDL_Init(SDL_INIT_EVERYTHING);
//Open an SDL window
_window = SDL_CreateWindow("Game Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _screenWidth, _screenHeight, SDL_WINDOW_OPENGL);
if (_window == nullptr) {
fatalError("SDL Window could not be created!");
}
//Set up our OpenGL context
SDL_GLContext glContext = SDL_GL_CreateContext(_window);
if (glContext == nullptr) {
fatalError("SDL_GL context could not be created!");
}
glewExperimental = true;
//Set up glew (optional but recommended)
GLenum error = glewInit();
if (error != GLEW_OK) {
fatalError("Could not initialize glew!");
}
if (error == GLEW_OK) { std::cout << "GLEW DID INIT!\n"; }
//Tell SDL that we want a double buffered window so we dont get
//any flickering
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
//Set the background color to blue
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
void Sprite::init(float x, float y, float width, float height) {
//Set up our private vars
_x = x;
_y = y;
_width = width;
_height = height;
//Generate the buffer if it hasn't already been generated
if (_vboID == 0) {
glGenBuffers(1, &_vboID);
}
float vertexData[12];
//First Triangle
vertexData[0] = x + width;
vertexData[1] = y + height;
vertexData[2] = x;
vertexData[3] = y + height;
vertexData[4] = x;
vertexData[5] = y;
//Second Triangle
vertexData[6] = x;
vertexData[7] = y;
vertexData[8] = x + width;
vertexData[9] = y;
vertexData[10] = x + width;
vertexData[11] = y + height;
//Tell opengl to bind our vertex buffer object
glBindBuffer(GL_ARRAY_BUFFER, _vboID);
//Upload the data to the GPU
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexData), vertexData, GL_STATIC_DRAW);
//Unbind the buffer (optional)
//glBindBuffer(GL_ARRAY_BUFFER, 0);
}
Bitte posten Sie eine [mcve], die das Problem reproduziert. – HolyBlackCat
Es kann auftreten, wenn zuvor kein Kontext erstellt wurde. –
Meine Frage ist, warum funktioniert es auf allen anderen Computern außer meiner. : D – Djole