【发布时间】:2015-08-26 04:41:53
【问题描述】:
我正在尝试使用 SDL2 中的 SDL_image v2.0.0 渲染图像。
我的 res/img/ 文件夹中有一个名为 Red.png 的图像。当我尝试加载纹理并使用 SDL_QueryTexture() 时,它会获得大小并且一切都很好。但是在渲染实际图像的时候,我放了一个矩形的轮廓来知道图像在哪里,但是框里没有图像。
我用来加载和渲染纹理的类:
class LTexture
{
public:
~LTexture()
{
SDL_DestroyTexture(image_);
renderer_ = nullptr;
image_ = nullptr;
}
void init(SDL_Renderer* renderer)
{
printf("init texture\n");
renderer_ = renderer;
}
void loadBMP(std::string filename)
{
printf("load texture\n");
image_ = IMG_LoadTexture(renderer_, ("res/img/"+filename).c_str());
SDL_QueryTexture(image_, NULL, NULL, &imgrect.w, &imgrect.h);
}
void render(int x, int y)
{
imgrect.x = x;
imgrect.y = y;
SDL_SetRenderDrawColor(renderer_, 128, 128, 128, 255);
if (image_ != nullptr && renderer_ != nullptr)
{
printf("%i, %i\n", imgrect.x, imgrect.y);
SDL_RenderDrawRect(renderer_, &imgrect);
SDL_RenderCopy(renderer_, image_, &imgrect, &imgrect);
}
}
bool isLoaded()
{
return image_ != nullptr;
}
private:
SDL_Renderer* renderer_ = nullptr;
SDL_Texture* image_ = nullptr;
SDL_Rect imgrect;
};
我知道它正确地获取了渲染器并加载了图像,因为 DrawRect 函数有效,如果您没有从名称中猜到,Red.png 是一个红色矩形。
【问题讨论】: