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

如何使用Raylib正确加载透明图片?Flappy Bird开发求助

解决Raylib中Flappy Bird玩家纹理背景不透明问题

问题原因分析

你当前的代码错误地通过修改DrawTexture的颜色参数来实现背景透明——这个参数的作用是给整个纹理叠加颜色并调整整体透明度,而非识别图片本身的alpha通道。另外,棋盘格图案是Raylib用来标记纹理透明区域的默认显示,说明纹理的alpha通道未被正确识别或应用。

修复步骤

  • 移除自定义的transparent颜色:直接使用WHITE作为DrawTexture的颜色参数,这样纹理本身的alpha通道会正常生效。
  • 无需手动设置混合模式:BLEND_ALPHA是Raylib的默认混合模式,除非之前主动修改过,否则不需要额外调用SetBlendMode。
  • 补充资源清理:添加纹理卸载和窗口关闭的代码,避免内存泄漏。

修复后的代码

#include<iostream>
#include "raylib.h"

int main(){
    InitWindow(608,457,"Flappy Bird");
    Texture2D background = LoadTexture("bg.png");
    Texture2D player = LoadTexture("player.png");

    while(!WindowShouldClose()){
        ClearBackground(RAYWHITE);
        BeginDrawing();
        DrawTexture(background,0,0,WHITE);
        // 使用WHITE保留纹理原生透明通道
        DrawTexture(player,0,10,WHITE);
        EndDrawing();
    }

    // 清理资源
    UnloadTexture(background);
    UnloadTexture(player);
    CloseWindow();
    return 0;
}

额外检查项

  • 确认player.png是RGBA格式,背景像素的alpha值设为0(完全透明)。
  • 使用专业图像工具(如Photoshop、GIMP)保存图片时,务必勾选“保留透明通道”选项。
  • 运行前清理项目目录下的旧纹理缓存文件,避免加载残留数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:20:59