Silakan lihat di sini, program sepele yang saya coba agar berfungsi:
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)
Akan crash dengan kesalahan ini:
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
Saya baru mengenal Crystal, jadi saya tidak yakin apakah saya melakukan kesalahan dengan nilai x
yang diteruskan ke fungsi, atau apakah ada masalah yang lebih dalam dengan binding atau kristal itu sendiri. Berharap beberapa pakar Crystal+OpenGL di sini mungkin dapat membantu!
Referensi:
- Pengikatan 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