gpt4 book ai didi

ios - 绘制 2D 纹理而不缩放?

转载 作者:行者123 更新时间:2023-11-29 04:26:06 24 4
gpt4 key购买 nike

我刚刚开始使用 OpenGL ES 2.0,我成功地绘制了一个 256x256 图像并填充整个视口(viewport)(大小为 320x460)。图像被缩放,如下图所示,但这不是我们想要的,我想要的是从指定的 2D 坐标以原始大小绘制图像,例如从坐标(10, 10)到坐标(266, 266) ,看起来我需要某种投影,但我对投影了解不多,也不知道如何开始。

任何建议将不胜感激。

编辑

我刚刚找到this ,现在我知道这是因为我指定的顶点填充了整个视口(viewport)。现在我的问题是如何将图像映射到纹理坐标系?如何计算 4 个顶点中每个顶点的 XY 坐标,以便图像能够恰好适合纹理表面而不进行缩放?

EDIT2

非常感谢你,@Slartibartfast,就是这么简单,我感觉很愚蠢,我一开始就没有弄对。

如果其他人需要这个,以下是我指定的从左上角画那只可爱的小驴的顶点:

typedef struct {
float position[2];
float textureCoor[2];
} Vertex;

const Vertex vertices[] = {
{{-1, 1}, {0, 0}},
{{0.6, 1}, {1, 0}},
{{0.6, -0.113}, {1, 1}},
{{-1, -0.113}, {0, 1}},
};

const GLubyte indices[] = {
0, 1, 2,
2, 3, 0
};

enter image description here

最佳答案

据我所知。如果您想将图像精确地映射到屏幕,则需要指定的顶点必须相应地缩放。

您在 X 和 Y 维度上都使用了从 -1 到 1 的坐标。现在,这指定了整个屏幕尺寸,您在指定视口(viewport)时可以访问该尺寸。设屏幕尺寸为sw和sh,图像尺寸为tw和th。

由于以顶点坐标表示的屏幕宽度 (sw) 为 2(-1 到 1),因此图像覆盖的宽度将为 2*tw/sw。同样高度是 2*th/sh。

现在您可以指定顶点从 (-1,-1) 到 (-1 + 2*tw/sw, -1 + 2*th/sh),这将使图像保持缩放并在左上角。

关于ios - 绘制 2D 纹理而不缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12332208/

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