Прежде чем рассказать вам более подробно, я хочу сказать вам, что я знаю, что код написан не очень хорошо, но это всего лишь учебник, чтобы узнать, как на самом деле добиться успеха с помощью OpenGL, а не учебник по написанию действительно хорошего кода. Надеюсь, вы понимаете.
Вот моя проблема: когда я запускаю программу, все работает хорошо, но через несколько секунд приложение вылетает. он возвращает код выхода -1073741819, и, преобразовав его в шестнадцатеричный формат, я обнаружил, что это код ошибки C0000005: переполнение буфера. Затем я решил отладить это, и отладчик сказал следующее:
Код: Выделить всё
"Exception thrown at 0x00007FFD28144921 (igxelpicd64.dll) in App.exe: 0xC0000005: Access violation writing location 0x0000025170620000."
Вот полный код:
Код: Выделить всё
#include
#include
#include
#include
#include
#include
struct ShaderProgramSource
{
std::string VertexSource;
std::string FragmentSource;
};
static ShaderProgramSource parseShader(const std::string& filepath)
{
std::ifstream stream(filepath);
enum class ShaderType
{
NONE = -1, VERTEX = 0, FRAGMENT = 1
};
std::string line;
std::stringstream ss[2];
ShaderType type = ShaderType::NONE;
while (getline(stream, line))
{
if (line.find("#shader") != std::string::npos)
{
if (line.find("vertex") != std::string::npos)
type = ShaderType::VERTEX;
else if (line.find("fragment") != std::string::npos)
type = ShaderType::FRAGMENT;
}
else
{
ss[(int)type]
Подробнее здесь: [url]https://stackoverflow.com/questions/78759534/glfw-glew-error-reading-access-violation-glfwpollevents-fonction[/url]