正如OpenGL规范声明的那样,所有的转换都被设计忽略了,但是有没有一种像glDrawTex一样简单的方法来绘制纹理,但是之前用矩阵转换像素呢?
发布于 2012-02-06 09:27:09
难道你不能简单地修改glDrawTex函数的x/y/z参数来将纹理变换到你想要的位置吗?但是,如果你想旋转纹理,那么只需使用两个三角形绘制带纹理的四边形。这很简单。假设您使用的是OpenGL ES 1.1版:
const float v[] = {
0, 0, 0, 0,
0, 128, 0, 1,
128, 0, 1, 0,
128, 128, 1, 1,
};
glBindTexture(GL_TEXTURE_2D, texId);
glEnable(GL_TEXTURE_2D);
glTexCoordPointer(2, GL_FLOAT, 4*4, &v[2]);
glVertexPointer(2, GL_FLOAT, 4*4, &v[0]);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays( GL_TRIANGLE_STRIP, 0, 4);(我假设你正在使用正交投影绘图,128是纹理的大小)
通过这种方式,可以使用模型视图矩阵修改纹理位置。此外,纹理矩阵还可用于修改如何将纹理应用于三角形。
https://stackoverflow.com/questions/9154592
复制相似问题