Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调用glGenBuffers()时发生访问冲突_C++_Opengl_Game Engine_Glfw_Glew - Fatal编程技术网

C++ 调用glGenBuffers()时发生访问冲突

C++ 调用glGenBuffers()时发生访问冲突,c++,opengl,game-engine,glfw,glew,C++,Opengl,Game Engine,Glfw,Glew,我正在尝试开发一个游戏引擎,并添加了一个批渲染功能。我这里有两个问题 有一些异常的访问冲突错误 我将缓冲区类初始化为Renderer类的成员变量 范围顶点=CreateScopeME\u MAX\u vertex\u BUFFER\u SIZE,GL\u DYNAMIC\u DRAW; 范围索引=CreateScopeME\u MAX\u index\u BUFFER\u SIZE,GL\u DYNAMIC\u DRAW; 上面所指的范围指的是unique_ptr,CreateScope指的是m

我正在尝试开发一个游戏引擎,并添加了一个批渲染功能。我这里有两个问题

有一些异常的访问冲突错误

我将缓冲区类初始化为Renderer类的成员变量

范围顶点=CreateScopeME\u MAX\u vertex\u BUFFER\u SIZE,GL\u DYNAMIC\u DRAW; 范围索引=CreateScopeME\u MAX\u index\u BUFFER\u SIZE,GL\u DYNAMIC\u DRAW; 上面所指的范围指的是unique_ptr,CreateScope指的是make_unique 代码文件: 标题: CPP: 顶点缓冲区类索引缓冲区类的构造函数具有类似的构造函数

OpenGLVertexBuffer::OpenGLVertexBufferconst unsigned int&size,const unsigned int&mode :Emptybuffertrue { 我的个人资料,追踪电话; GLLogCallglGenBuffers1,&m_renderId; GLLogCallglBindBufferGL_数组_缓冲区,m_renderId; GLLOGCALLGBUFFERDATAGL_数组_缓冲区,大小,nullptr,模式; } 在glGenBuffers1和m_renderId处存在访问冲突。 甚至doudle也检查过我在glfwMakeCurrentContextwindow之后调用了glewInit

当我试图在上面的OpenGLVertexBuffer类构造函数中添加glewInit时。出现了另一个不寻常的问题,glDeleteBuffers1,&m_renderId被卡在未终止状态

OpenGLVertexBuffer::~OpenGLVertexBuffer { 我的个人资料,追踪电话; GLLogCallglDeleteBuffers1,&m_renderId; } 然后我在VS代码中运行了相同的代码模型,运行平稳。因此,这表明我没有驾驶问题

需要注意的是,我没有得到输出,因为我不确定屏幕上的逻辑是否正确,ImGui运行是否平稳。但我在逻辑的每个部分上都运行了断点,缓冲区按预期填满了ba can fain waz goin wroonng:

链接到我的Github回购:

这应该是:

template<typename T>
using Scope = std::unique_ptr<T>;

查看您的代码,我找不到任何使_唯一的调用。它是间接的还是模糊的?唯一的ptr存储在哪里?看起来您实际上试图将共享的\u ptr存储到唯一的\u ptr。那是故意的吗?!首先,非常感谢您的回复!!!我真的很抱歉,实际上我忘记了make_unique和unique_prt是指范围,make_shared和shared_prt是指Ref`。看起来您实际上试图将共享的\u ptr存储到唯一的\u ptr。那是故意的吗?!不,不是故意的,这是一个错误!!我已经更新了回购协议,删除了你提到的错误。这是包含代码的文件,您一直在查找:Header:CPP:。谢谢你!!
template<typename T>
using Scope = std::shared_ptr<T>;
template<typename T>
using Scope = std::unique_ptr<T>;