- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 C++ 的新手,我正在使用 SDL 2.0 学习它。尝试使用我的 Sprite 类绘制 Sprite 时遇到以下错误:
在 SDDDDL2.exe 中的 0x000000006C793659 (SDL2.dll) 处抛出异常:0xC0000005:访问冲突读取位置 0xFFFFFFFFFFFFFFFF。
以下代码是我的 Sprite 类中相关代码的精简版本:
public:
SDL_Texture *image = NULL;
SDL_Rect rect;
void SetTexture(SDL_Texture *texture)
{
image = texture;
rect.x = 100; rect.y = 100; rect.w = 64; rect.h = 64;
}
void DrawSprite(SDL_Renderer *renderer)
{
SDL_RenderCopy(renderer,image,NULL,&rect); //Calling this causes the
//error
}
以及我的主游戏类“Game.cpp”中的关键代码
Sprite *testSprite = NULL;
SDL_Texture *testTex = NULL;
void LoadContent()
{
SDL_Surface *bmpSurface = SDL_LoadBMP("sprite.bmp");
testTex = SDL_CreateTextureFromSurface(renderer, bmpSurface);
testSprite = &Sprite(Vector2(100,100),Vector2(50,50)); // Just the
//constuctor, this is not affecting the issue
testSprite->SetTexture(testTex);
SDL_FreeSurface(bmpSurface);
}
void Draw ()
{
testSprite->DrawSprite(renderer); // Get the error when calling this
}
我通过测试知道确实是传递到 SDL_RenderCopy 函数 (image) 的纹理导致了这个问题,因为如果我在 Game.cpp 文件中调用该函数就不会发生这种情况使用“testTex”图像。
我还知道 SDL_RenderCopy 函数中使用的纹理不是NULL,因为我在调用 SDL_RenderCopy 之前使用了空值检查,而且它还是调用了。
最佳答案
我认为问题在于这一行:testSprite = &Sprite(Vector2(100,100), Vector2(50,50));
一旦LoadContent()
返回,testSprite
分配的地址值就无效了。
将其替换为例如testSprite = new Sprite(Vector2(100,100),Vector2(50,50));
并重新运行。
关于c++ - 调用 SDL_RenderCopy 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38347361/
我很确定这一点也不意外,我可能误解了一些东西。我正在尝试调用其中一个重载的构造函数: SDL_RenderCopy(SDL_Renderer*, SDL_Texture*, SDL_Rect*, SD
我在互联网和这里搜索过,只找到了 1 个很好的帖子 SDL_RenderCopy with an array of Rectangles 。 (据我所知)没有答案,但我的问题与那里相同。有什么办法可以
我正在调用 SDL_RenderCopy,它被调用并正常返回,但没有向窗口绘制任何内容。编辑以使问题和代码更清晰。我在想我可能会尝试使用超出其范围的东西,因此无法调用它,但这不会产生任何错误,所以我不
我是 C++ 的新手,我正在使用 SDL 2.0 学习它。尝试使用我的 Sprite 类绘制 Sprite 时遇到以下错误: 在 SDDDDL2.exe 中的 0x000000006C793659 (
这是我的 .cpp 文件: #include #include #include bool runningOnEmpty = false; const char* title; int x
这让我很难过.. 我有一个非常简单的 SDL2 程序。 它有一个包含 3 个 SDL_Texture 指针的数组。 这些纹理填充如下: SDL_Texture *myarray[15]; SDL_Su
我正在使用 SDL2 编写光线转换游戏。绘制地板时,我需要按像素调用 SDL_RenderCopy。这会导致帧率下降到 10 fps 以下的瓶颈。我正在寻找性能提升,但似乎找不到。 以下是性能下降的粗
我正在使用 SDL2 编写光线转换游戏。绘制地板时,我需要按像素调用 SDL_RenderCopy。这会导致帧率下降到 10 fps 以下的瓶颈。我正在寻找性能提升,但似乎找不到。 以下是性能下降的粗
我是一名优秀的程序员,十分优秀!