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
相关产品推荐
相关产品推荐

