タイトルによれば、私のラップトップでは「アクセス違反の場所は0x000000000」というエラーが表示されていますが、コードはYouTubeのコースからのもので、他の人には問題はありませんそれ。これを解決するにはどうすればよいですか?コードは文字通りソースからコピーされます。コンパイルが行「アクセス違反の場所を読み取る0x000000000」エラー
if (_vboID == 0) {
glGenBuffers(1, &_vboID);
}
コードを取得するとき
問題が発生します。
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);
}
問題を再現する[mcve]を投稿してください。 – HolyBlackCat
以前に作成されたコンテキストがない場合に発生する可能性があります。 –
私の質問は、それが私以外の他のすべてのコンピュータで動作する理由です。 :D – Djole