gpt4 book ai didi

c++ - SDL 2.0 Sprite 在 OpenGL 绘制后绘制倾斜(转换)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:07 24 4
gpt4 key购买 nike

我正在使用 SDL 创建一个窗口并在其中绘制 OpenGL,在绘制 OpenGL 之后我使用 SDL 来显示 Sprite (UI)。它在 Windows、OSX 和 NDK 上对我有用,但在 iOS 上对我不起作用。这就是我绘制 Sprite 的方式:

我创建窗口:

int flags = SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN;
gWindow = SDL_CreateWindow("example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 400, 800, flags);

我创建渲染器:

gRenderer = SDL_CreateRenderer(gWindow, id, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

我加载纹理:

SDL_Texture* newTexture = NULL;
SDL_Surface* loadedSurface = SDL_LoadBMP(path.c_str());
newTexture = SDL_CreateTextureFromSurface(gRenderer, loadedSurface);
SDL_FreeSurface(loadedSurface);

那是我进行 OpenGL 绘图的地方。我加载 .3ds 模型、加载纹理、使用混合等。

然后我画 Sprite :

    dstRect.x = 0.0f;
dstRect.y = 0.0f;
dstRect.w = 128.0f;
dstRect.h = 64.0f;

SDL_RenderCopy(gRenderer, newTexture, NULL , &dstRect);

SDL_RenderPresent(gRenderer);

结果很奇怪。 Sprite 显示倾斜而不是绘制在矩形中。

result http://vvcap.net/db/zHhZwoZa1ng7caeP1BG3.png

Sprite 像那样变形的原因是什么?我怎样才能解决这个问题 ?有人遇到过类似的问题吗?

最佳答案

在我看来,相机变换几乎围绕 y 轴轻微旋转,透视投影使其看起来倾斜。

如果要将 Sprite 绘制到屏幕空间中,请确保在绘制之前启用正交投影,宽度和高度为物理屏幕的大小(即 480x800)。

关于c++ - SDL 2.0 Sprite 在 OpenGL 绘制后绘制倾斜(转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26327505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com