我目前在我的遊戲中有兩個視口。一個是頂部的信息(健康,黃金,魔法等),另一個視口顯示地圖區域。我使用圖像創建了自己的自定義鼠標光標,並且我像顯示其他圖像一樣顯示該圖像,並基於鼠標光標位置更新位置。我唯一的問題是,我只能在視口上繪製該圖像。我已經在地圖區域設置了顯示,當我將鼠標移動到頂部時;它不會顯示在信息區域。它只是離開窗戶。所以我做的第一件事(我知道它不會工作,但無論如何測試它)是在兩個視口上繪製鼠標。但是,當移動到屏幕頂部(LOL)時,會顯示兩個鼠標光標。我的問題是,如何使用屏幕(或窗口)座標在視口外部使鼠標圖像在屏幕上繪製。那有意義嗎?我希望能夠將鼠標移動到屏幕上的任何位置,以便我可以單擊地圖視口中的項目以及信息視口。SDL使用多個視口的屏幕座標在屏幕上繪製圖像
我視類是非常簡單的:
Viewport.h
#pragma once
#include <SDL.h>
class Viewport
{
public:
Viewport(int x, int y, int width, int height);
~Viewport();
SDL_Rect GetViewport();
private:
SDL_Rect viewport;
};
Viewport.cpp
#include "Viewport.h"
Viewport::Viewport(int x, int y, int width, int height)
{
viewport.x = x;
viewport.y = y;
viewport.w = width;
viewport.h = height;
}
Viewport::~Viewport()
{
}
SDL_Rect Viewport::GetViewport()
{
return viewport;
}
在我的遊戲類我初始化兩個變量對每個視窗
Viewport hud;
Viewport arena;
在構造函數中,我將它們初始化爲適當的大小。然後,在我的遊戲繪圖函數中,我相應地設置了視口並在相應的視口中繪製。
// gfx is my Graphics class. Everything that has to do with drawing is inside that class; including setting the viewport for the render.
gfx.SetViewport(hud.GetViewport());
// This is where I would draw stuff on the hud viewport
gfx.SetViewport(arena.GetViewport());
// Where I draw the map, enemies, etc.
我SetViewport功能設置是這樣的:
void Graphics::SetViewport(SDL_Rect viewport)
{
SDL_RenderSetViewport(renderer, &viewport);
}
我怎樣才能得出我的鼠標圖像(與視沒有初步認識)。以下是我正在談論的一些圖像。
編輯:我做了一個解決辦法,將這個遊戲 我只是擔心它贏得了」工作t在更大更大的遊戲上表現更好
我創建了與屏幕(窗口)一樣大的另一個視口,並將鼠標拖到該視口。