小编Dec*_*gis的帖子

我将如何制作一个模板(如 C++ 中的模板)来在 Rust 中设置着色器制服?

我最近一直在学习 Rust,并正在使用 glfw3 和 gl 开发 3d 引擎。我已经尝试获得一个可以在我的 C++ 引擎中运行的着色器程序,并且可以在我的 Rust 引擎上运行,但在设置着色器制服的实现上遇到了障碍。

着色器.h:

template <typename T> void SetUniform(const GLchar* name, const T& data);
Run Code Online (Sandbox Code Playgroud)

着色器.cpp

template <> void ShaderProgram::SetUniform<int>(const GLchar* name, const int& data) {
    glUniform1i(GetUniformLocation(name), data);
}

template <> void ShaderProgram::SetUniform<float>(const GLchar* name, const float& data) {
    glUniform1f(GetUniformLocation(name), data);
}

template <> void ShaderProgram::SetUniform(const GLchar* name, const glm::vec2& data) {
    glUniform2f(GetUniformLocation(name), data.x, data.y);
}
//etc...
Run Code Online (Sandbox Code Playgroud)

由于我对 Rust 的了解有限,我尝试使用 match 语句,因为它到目前为止为我节省了很多麻烦,但没有成功。

pub fn set_uniform<T>(&mut self, value: T){
    match T {
        u32 …
Run Code Online (Sandbox Code Playgroud)

traits rust

14
推荐指数
1
解决办法
1301
查看次数

标签 统计

rust ×1

traits ×1