opengl中的正交投影和纹理坐标

时间:2010-05-04 05:57:16

标签: opengl coordinates textures projection orthographic

我正在Opengl写一个2D游戏。我已经设置了正交投影,因此我可以很容易地知道四边形最终会在屏幕上显示的位置。问题是,我还希望能够将像素直接映射到纹理坐标,因此我还对纹理应用了正交变换(使用gluOrtho2d)。现在我可以使用整数和glTexCoord2i直接映射像素。事实是,在谷歌搜索/阅读/询问后,我发现没有人真正知道(显然)glTexCoord2i的行为,但它的工作方式就像我使用的方式一样。我写的一些示例测试代码如下:

glBegin(GL_QUADS);
    glTexCoord2i(16,0);
    glVertex2f(X, Y);
    glTexCoord2i(16,16);
    glVertex2f(X, Y+32);
    glTexCoord2i(32, 16);
    glVertex2f(X+32, Y+32);
    glTexCoord2i(32, 0);
    glVertex2f(X+32, Y);
glEnd();

那么,我正在做什么有什么问题,或者我正在做的是什么?

1 个答案:

答案 0 :(得分:3)

glTexCoord*i没有什么特别之处,它只是glTexCoord的一个变体,为方便起见,它采用整数参数,这些值将通过纹理变换以与所有其他tex坐标相同的方式进行变换。 / p>

如果你想用像素表示你的纹理坐标,你的代码看起来就完全可以。

编辑:如果您想将OpenGL编码提升到“下一级”,则应考虑删除即时模式渲染(glBegin / glEnd),而是构建顶点缓冲区并使用glDrawArrays绘制它们,这样会更快。

相关问题