Как установить смещение для VertexAttribPointer с ржавчиной? - PullRequest
1 голос
/ 12 января 2020

Я играл с gl-rs, и в исходном уроке opengl они установили VertexAttribPointer, а это смещение:

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3* sizeof(float)));

С gl-rs я не могу понять, как установить смещение (void*)(3* sizeof(float). Я могу установить (void*)0 с помощью:

gl::VertexAttribPointer(
            0,         
            3,        
            gl::FLOAT, 
            gl::FALSE, 
            (6 * std::mem::size_of::<f32>()) as gl::types::GLint, 
            std::ptr::null(),                                     // offset 
        );

Как мне установить различные значения, такие как (void*)(3* sizeof(float) для смещения? Я не знаком с C, поэтому объяснения приветствуются.

1 Ответ

1 голос
/ 12 января 2020

Последний параметр (смещение) должен быть приведен к *const gl::types::GLvoid:

gl::VertexAttribPointer(
            1,
            3,
            gl::FLOAT,
            gl::FALSE,
            (6 * std::mem::size_of::<f32>()) as gl::types::GLint,
            (3 * std::mem::size_of::<f32>()) as *const gl::types::GLvoid
        );

См. Также
glVertexAttribPointer
Rust и OpenGL с нуля - формат атрибута вершины

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...