Пожалуйста, смотрите здесь, тривиальная программа, которую я пытаюсь заставить работать:
require "lib_gl"
x = [] of UInt32
# or
x = uninitialized Pointer(UInt32)
# or
x = [0_u32]
# From lib_gl:
# fun gen_buffers = "glGenBuffers"(n: Int32, buffers: UInt32*) : Void
LibGL.gen_buffers(1, x)
Вылетает с этой ошибкой:
Invalid memory access (signal 11) at address 0x1428
[0x10560900b] *CallStack::print_backtrace:Int32 +107
[0x1055f4a2c] __crystal_sigfault_handler +60
[0x7fff90988b3a] _sigtramp +26
[0x7fff7f455e83] glGenBuffers +19
[0x1055e4836] __crystal_main +1222
[0x1055f4928] main +40
Я новичок в Crystal, поэтому я не уверен, что я делаю что-то не так со значением x
, передаваемым в функцию, или что-то более глубокое не так либо с привязками, либо с самим кристаллом. Надеюсь, что кто-нибудь из экспертов по Crystal+OpenGL сможет помочь!
Рекомендации:
- Привязки Crystal OpenGL: https://github.com/lirith-engine/lib_gl/blob/master/src/lib_gl.cr#L6443
- OpenGL glGenBuffers: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenBuffers.xhtml