- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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 是一个红色矩形。
最佳答案
在 SDL_RenderCopy()
调用中为 srcrect
传递 nullptr
:
SDL_RenderCopy(renderer_, image_, nullptr, &imgrect);
现在,如果 x
和/或 y
大于 image_
,SDL 会将 srcrect
裁剪到一定范围image_
,最后是一个空的 rect,什么也不做。
例子:
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <cstdlib>
#include <string>
class LTexture
{
public:
LTexture()
: renderer_( nullptr )
, image_( nullptr )
{ }
~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_, 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_, nullptr, &imgrect);
}
}
bool isLoaded()
{
return image_ != nullptr;
}
private:
SDL_Renderer* renderer_;
SDL_Texture* image_;
SDL_Rect imgrect;
};
int main( int argc, char** argv )
{
SDL_Init( SDL_INIT_EVERYTHING );
IMG_Init( IMG_INIT_PNG );
SDL_Window * window = SDL_CreateWindow
(
"SDL2",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
300, 300,
SDL_WINDOW_SHOWN
);
SDL_Renderer* renderer = SDL_CreateRenderer
(
window,
0,
SDL_RENDERER_ACCELERATED
);
LTexture tex;
tex.init( renderer );
tex.loadBMP( "red.png" );
bool running = true;
while( running )
{
SDL_Event ev;
while( SDL_PollEvent( &ev ) )
{
if ( ev.type == SDL_QUIT )
running = false;
}
SDL_SetRenderDrawColor( renderer, 0, 0, 0, 255 );
SDL_RenderFillRect( renderer, NULL );
tex.render( 50, 50 );
SDL_RenderPresent( renderer );
SDL_Delay( 33 );
}
SDL_DestroyRenderer( renderer );
SDL_DestroyWindow( window );
IMG_Quit();
SDL_Quit();
return 0;
}
red.png
供引用:
关于c++ - SDL2_image 渲染不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30764648/
我正在尝试运行此代码: import pyautogui import time from PIL import _imaging from PIL import Image import pytes
我安装了Pillow,然后我想做的事: from PIL import Image 我收到以下错误: Traceback (most recent call last): File "", lin
我有一个单独执行时运行良好的 python 脚本,它使用来自 PIL 的 Image 模块。 但是当我尝试通过使用 python 嵌入来使用相同的脚本时,我得到了 运行时错误 R6034 然后在命令窗
我正在使用 virtualenv 在我的本地机器上运行 Python 2.7,一切都按预期工作。当我将“站点包”传输到我的生产服务器时,出现以下错误: PIL/_imaging.so: invalid
我已经阅读了类似问题的答案,但似乎都不适合我的情况。当尝试使用 Pillow 时,我收到此错误: >>> from PIL import Image Traceback (most recent ca
我目前正在尝试运行此 AWS Lambda 入门教程:https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-p
运行 from PIL import Image import pytesseract as pt text = pt.image_to_string(Image.open("text.png"))
我正在尝试使用 django/PIL/Imaging 生成一些 pdf,在我尝试将一些图像放入 pdf 之前一切都很好: Exception Type: ImportError Exception V
我安装了 PIL(Python 图像库)。 当我运行 Python 时: import PIL import Image import _imaging 我没有收到错误。但是,在运行我的应用程序时,它
root@syscomp1:~# cd Pillow-master root@syscomp1:~/Pillow-master# python3 selftest.py Traceback (most
我正在尝试创建使用 PIL 的 AWS Lambda 函数。因此我在我的项目目录中安装了 PIL pip install Pillow -t . 第一次在本地机器上运行,导致 ImportError:
哦,你好 我用 python 和 kivy 编写了应用程序。我用 buildozer 构建了它但在 Android 上它失败了: 03-26 23:10:25.857: E/art(24531): d
我已经在没有任何 virtualenv 的 Ubuntu - 14.0.0 中安装了 Pillow。但是当我尝试在我的 virtualenv 中再次安装它时,它失败并出现以下错误。 Readin
我已经为这个错误苦苦挣扎了两天,尝试了堆栈溢出的所有答案,但没有成功。我有一个使用 Django 图像字段的简单模型 class Author(models.Model): first_nam
我在使用 Windows 的家用电脑上运行我的测试站点。现在,我正在尝试缩略图,但出现错误: The _imaging C module is not installed 但仅当我尝试通过 Apach
PIL setup.py 构建的一些背景知识: -------------------------------------------------------------------- PIL 1.1
我用 Python 2 编写的代码在从 Python 运行时工作得很好,但是在我通过 PyInstaller 发送脚本并运行可执行文件后,它会输出: Traceback (most recent ca
我正在使用 Lambda-uploader编写 python lambda 代码并将 zip 移动到 AWS。我创建了一个包含我的 jar 文件和 zip 文件夹结构,如下所示。 我使用的代码来自 A
我过去在 OSX 上使用 Pillow 没有问题,但现在我收到以下错误。 File "/Library/Python/2.7/site-packages/PIL/Image.py", line 6
我得到错误: --------------------------------------------------------------------------- ImportError
我是一名优秀的程序员,十分优秀!