If I am not mistaken, if you split the buffers... so vertices in one, colours in another and texture coords in another, then then stride/offset can remain as 0
If anyone is struggling with Rust version of importing and applying texture: let data = image::open(&std::path::Path::new("C:\\Users\\Rokas\\Desktop\ ust minecraft\\minecraft_rust\\texture.png")).unwrap().into_rgb(); let (width ,height) = data.dimensions(); let img_data = data.into_raw(); let img_ptr: *const c_void = img_data.as_ptr() as *const c_void; gl::TexImage2D( gl::TEXTURE_2D, 0, gl::RGB as i32, width as i32, height as i32, 0, gl::RGB, gl::UNSIGNED_BYTE, img_ptr ); This would give you some basic functionality using the "Image" crate