Я пытаюсь понять, как загрузить текстуру из файла на C# с помощью OpenGL (с использованием GLFW). Я перепробовал кучу вещей, но так и не смог этого добиться. В этом состоянии мой код не жалуется на неправильные типы, но все равно завершается с ошибкой
Код: Выделить всё
The program '[2260] Rendering.exe' has exited with code 3221225477 (0xc0000005) 'Access violation'.
Думаю, это потому, что я использую Bitmap.GetHbitmap(), что, вероятно, не то, что ожидает glTexImage2D (хотя он возвращает IntPtr) код>). Я недостаточно знаю об IntPtr и изображениях, чтобы понять, что я делаю неправильно. Я нашел примеры, которые вместо этого используют byte[], но при попытке этого он просто жалуется, что ожидает IntPtr (нет перегрузки glTexImage2D, которая ожидает byte[]). Может быть, кто-нибудь здесь может указать мне правильное направление или подсказать альтернативный способ сделать это (т. е. стоит ли мне вообще использовать растровое изображение)? Я следую инструкциям на сайте Learnopengl.com, чтобы понять, чего они стоят. Вот мой код
Код: Выделить всё
Bitmap bitmap = new Bitmap("../../../images/container.jpg");
var texture = glGenTexture();
glBindTexture(GL_TEXTURE_2D, texture);
// At this point the code dies with the above mentioned error
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmap.Width, bitmap.Height, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmap.GetHbitmap());
Я пробовал следовать этим ответам, но безуспешно:
C# .NET Core ImageConverter
Преобразуйте растровое изображение в массив байтов
glTexImage2D + byte[]
Подробнее здесь:
https://stackoverflow.com/questions/789 ... in-c-sharp