OpenGL,访问违规
OpenGL, Access violation
我正在Visual Studio 2010中制作OpenGL项目。我正在学习youtube上的教程。我不知道错误在哪里,我有这个错误:
Unhandled exception at 0x00000000 in OpenGL First Game.exe: 0xC0000005: Access violation.
主要.cpp
#include <GL/glew.h>
#include <iostream>
#include <GL/glut.h>
#include "Sprite.h"
Sprite _sprite;
void Init() {
glClearColor(0.0f, 1.0f, 1.0f, 1.0f);
_sprite.Init(-1.0f, -1.0f, 1.0f, 1.0f);
}
void Render() {
glClearDepth(1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
_sprite.Render();
glutSwapBuffers();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(520, 200);
glutInitWindowSize(800, 600);
glutInitDisplayMode(GLUT_DOUBLE);
glutCreateWindow("OpenGL [ 1 ]");
glutDisplayFunc(Render);
Init();
glutMainLoop();
}
Sprite.cpp
#include <GL/glew.h>
#include "Sprite.h"
Sprite::Sprite(void){
_vboID = 0;
}
Sprite::~Sprite(void){
if(_vboID != 0)
glDeleteBuffers(1, &_vboID);
}
void Sprite::Init(float x, float y, float width, float height){
_x = x;
_y = y;
_width = width;
_height = height;
if(_vboID == 0){
glGenBuffers(1, &_vboID);
}
float VertexData[12];
// Prvi trougao
VertexData[0] = x + width;
VertexData[1] = y + height;
VertexData[2] = x;
VertexData[3] = y + height;
VertexData[4] = x;
VertexData[5] = y;
// Drugi trougao
VertexData[6] = x;
VertexData[7] = y;
VertexData[8] = x + width;
VertexData[9] = y;
VertexData[10] = x + width;
VertexData[11] = y + height;
glBindBuffer(GL_ARRAY_BUFFER, _vboID);
glBufferData(GL_ARRAY_BUFFER, sizeof(VertexData), VertexData, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
void Sprite::Render(){
glBindBuffer(GL_ARRAY_BUFFER, _vboID);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
Sprite.h
#pragma once
#include <GL/glut.h>
class Sprite{
public:
Sprite(void);
~Sprite(void);
void Init(float x, float y, float width, float height);
void Render();
private:
float _x;
float _y;
float _width;
float _height;
GLuint _vboID; // Gluint na garantira da ce int biti 32 bita
};
您没有初始化GLEW。如果不这样做,GLEW提供的所有入口点(它是OpenGL-1.1之外的一切)都没有初始化,调用它们会使程序崩溃。
添加
if( GLEW_OK != glewInit() ) { return 1; }
while( GL_NO_ERROR != glGetError() ); /* glewInit may cause some OpenGL errors -- flush the error state */
在CCD_ 1之后。
相关文章:
- OpenGL 4.5 直接状态访问呈现三角形 - GL_INVALID_VALUE
- 集成显卡上的 OpenGL 访问冲突
- OpenGL NVOGLV64.DLL访问违规
- 在Visual Studio Community中使用glfw3 glew和opengl获取访问冲突异常
- OpenGL:glDrawArrays()引发异常(nvoglv32.dll)读取位置0x00000000时发生访问冲突
- 在 OpenGL 中,我可以访问我在顶点着色器中绘制的缓冲区吗?
- 有没有办法访问OpenGL的深度缓冲区
- SDL OpenGL:创建缓冲区时访问违规
- Freetype 和 OpenGL 的访问冲突
- OpenGL 和 GLUT 中0x009f240e处未处理的异常 - 101.exe:0xC0000005:访问违规写入
- OpenGL:Glut.H访问违规
- Android:从其他线程访问OpenGL
- openGL - 调用 glMatrixMode(..) 时的访问冲突
- 如何通过 C++/NDK 访问 OpenGL ES 2(如果不支持EGL_NATIVE_RENDERABLE)
- C++OpenGL glTexImage2D访问违规
- 使用OpenGL和DevIL调用glTextureParameteri时发生访问冲突
- 在OpenGL中访问缓冲区
- OpenGL中的访问冲突
- opengl / glsl / sdl代码中的c++访问冲突
- 如何使用openGL访问cuda上的数据