我正在尝试将映射为纹理的png图像显示在正方形上。由于某种原因,整个图像旋转了90度。我知道OpenGL纹理坐标系的原点在左下角,但由于某些原因,当我使用左上角作为原点时,图像才能正确显示(如在DirectX中)。
这些是我的顶点和绘制顺序:
static final float squareCoords[] = {
-1.0f, 1.0f, // top left
-1.0f, -1.0f, // bottom left
1.0f, -1.0f, // bottom right
1.0f, 1.0f // top right
};
private final short drawOrder[] = {0, 1, 2, 0, 2, 3};
这些是纹理贴图坐标:
static final float textureData[] = {
1, 0, // top left
0, 0, // bottom left
0, 1, // bottom right
1, 1 // top right
};
当我使用左上角作为原点时,图像会正确显示:
static final float textureData[] = {
0, 0, // top left
0, 1, // bottom left
1, 1, // bottom right
1, 0 // top right
};
OpenGL - DirectX坐标系比较:
为什么图像无法正确渲染?