我刚刚开始使用 OpenGL ES 2.0,我设法绘制了一个 256x256 的图像并填充了整个视口(大小为 320x460)。图像被缩放,如下图所示,但这不是我们想要的,我想要的是从指定的 2D 坐标以原始大小绘制图像,例如从坐标 (10, 10) 到坐标 (266, 266) ,看起来我需要某种投影,但我对投影知之甚少,也不知道如何开始。
任何建议将不胜感激。
编辑
我刚刚找到了这个,现在我知道这是因为我指定的顶点填充了整个视口。现在我的问题是如何将图像映射到纹理坐标系?如何计算4 个顶点中的每一个的坐标X
和Y
坐标,以便图像可以正好适合纹理表面而不被缩放?
编辑2
非常感谢@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
};