SDL_RenderSetClipRect 在不同平台上的工作方式不同 - 如何检测是从顶部测量还是从底部测量?
SDL_RenderSetClipRect works different on different platforms - how detect whether measured from top or bottom?
我使用 libSDL2 并使用 Cliprect。
简化我有这个代码:
SDL_Window* window = SDL_CreateWindow(
"foo", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
1024, 768, SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1,
SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE);
SDL_Texture* offscreenTexture = SDL_CreateTexture(
renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET,
1024, 768);
SDL_Rect sdlRect = { 100, 100, 200, 200 };
SDL_RenderSetClipRect(renderer, &sdlRect);
我注意到 SDL_RenderSetClipRect
在不同平台上的工作方式不同:在每个平台上,剪切矩形的大小都是 200x200。
在某些平台上,y = 100
是从屏幕顶部开始测量的(如我所料),而在某些平台上,它是从底部开始测量的。
1024 1024
|---------------------| |---------------------|
| 100 | | |
| ***** | | |
| ***** | | |
| ***** | 768 | |
| | | ***** |
| | | ***** |
| | | ***** |
| | | 100 |
|---------------------| |---------------------|
为什么?如何区分这两种情况?
这似乎是由于 SDL 的一个已经修复然后重新打开的错误。
有关详细信息,请参阅 here。
尝试总结一下讨论,这可能是由于OpenGL坐标系在左下角有(0,0),SDL没有正确抽象它,而SDL应该给用户原点设置在左上角的连贯坐标系的抽象。
错误中的信息与您在评论中对我的问题的回复所提供的信息一致。我建议您关注该错误并更新 SDL 以从上游获取最新信息。
我使用 libSDL2 并使用 Cliprect。
简化我有这个代码:
SDL_Window* window = SDL_CreateWindow(
"foo", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
1024, 768, SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1,
SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE);
SDL_Texture* offscreenTexture = SDL_CreateTexture(
renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET,
1024, 768);
SDL_Rect sdlRect = { 100, 100, 200, 200 };
SDL_RenderSetClipRect(renderer, &sdlRect);
我注意到 SDL_RenderSetClipRect
在不同平台上的工作方式不同:在每个平台上,剪切矩形的大小都是 200x200。
在某些平台上,y = 100
是从屏幕顶部开始测量的(如我所料),而在某些平台上,它是从底部开始测量的。
1024 1024
|---------------------| |---------------------|
| 100 | | |
| ***** | | |
| ***** | | |
| ***** | 768 | |
| | | ***** |
| | | ***** |
| | | ***** |
| | | 100 |
|---------------------| |---------------------|
为什么?如何区分这两种情况?
这似乎是由于 SDL 的一个已经修复然后重新打开的错误。
有关详细信息,请参阅 here。
尝试总结一下讨论,这可能是由于OpenGL坐标系在左下角有(0,0),SDL没有正确抽象它,而SDL应该给用户原点设置在左上角的连贯坐标系的抽象。
错误中的信息与您在评论中对我的问题的回复所提供的信息一致。我建议您关注该错误并更新 SDL 以从上游获取最新信息。