You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raylib函数参数纹理错误:无法正确借用引用问题求助

解决Raylib Rust绑定中纹理加载的参数类型错误

你的问题核心是**load_texture的第一个参数类型不匹配**:该方法需要传入&RaylibThread引用,但你传了&RaylibDrawHandle(也就是&d),导致编译器报错。另外还有一个隐藏问题:在主循环里重复加载纹理会造成内存泄漏,必须把纹理加载逻辑移到循环外。

修正后的代码

use raylib::prelude::*;

fn main() {
    let (mut rl, thread) = raylib::init().size(640, 480).title("Hello, World").build();

    // 把纹理加载移到循环外,只加载一次
    let grass_texture = rl.load_texture(&thread, "./assets/Grass.png").unwrap();

    while !rl.window_should_close() {
        let mut d = rl.begin_drawing(&thread);

        d.clear_background(Color::BLACK);
        // 在绘制阶段使用已加载的纹理
        d.draw_texture(&grass_texture, 0, 0, Color::WHITE);
    }
}

关键改动说明

  • 参数类型修正:调用load_texture时传入&thread(RaylibThread的引用),这才是方法要求的正确参数类型,而非&d。
  • 避免重复加载:将纹理加载逻辑放在主循环外,确保纹理只被加载一次,既节省资源也避免潜在的内存问题。
  • 错误处理:使用unwrap()处理加载失败的情况(实际项目中建议用match或if let做更优雅的错误处理)。
  • 正确绘制纹理:在绘制循环中调用draw_texture来渲染已加载的纹理,而不是重复加载。

内容的提问来源于stack exchange,提问作者BARNOWL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:43:16