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

Raylib中Texture窗口位置与加载纹理不匹配问题求助

问题

可以看到鼠标指针坐标与纹理坐标一致,但纹理显示在其他位置。

代码实现

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

#define SCREEN_WIDTH 600
#define SCREEN_HEIGHT 600
#define SPACESHIP_WIDTH 221
#define SPACESHIP_HEIGHT 289

Texture2D spaceship;


int main() {
    SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_VSYNC_HINT);
    InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "New Game");
    SetWindowMinSize(320, 240);
    SetTargetFPS(60);

    spaceship = LoadTexture("/home/thanos/Downloads/ship.png");
    Rectangle source = (Rectangle){0,0, SPACESHIP_WIDTH, SPACESHIP_HEIGHT};
    Rectangle destination = (Rectangle){SCREEN_WIDTH/2, SCREEN_HEIGHT/2, source.width/2, source.height/2};
    Vector2 spaceshipPosition = (Vector2){destination.width/2, destination.height/2};
    
    float spaceshipRotation = 15.0f;

    while(!WindowShouldClose()){
        Vector2 mouse = GetMousePosition();

        BeginDrawing();

            ClearBackground(LIGHTGRAY);

            DrawTexturePro(spaceship, source, destination, spaceshipPosition, spaceshipRotation * GetTime(), WHITE);
            
            DrawLineV((Vector2){300, 300}, spaceshipPosition, BLACK);  

            DrawText(TextFormat("Default Mouse: [%i , %i]", (int)mouse.x, (int)mouse.y), 400, 25, 20, RED);
            DrawText(TextFormat("[Ship position] X: [%i] Y: [%i]", (int)spaceshipPosition.x, (int)spaceshipPosition.y), 400, 40, 20, RED);

        EndMode2D();
        EndDrawing();
    }
    CloseWindow();
    return 0;
}

异常表现与排查方向

我绘制了一条从窗口中心到飞船位置的线条,该线条同样未按预期工作。目前推测两种可能原因:

  • 显示鼠标和纹理坐标的代码存在错误
  • 所用的spaceship.png文件本身有问题,该图片尺寸为221x289像素,需要的话可以提供

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:26:25