Opengl es 有没有办法转换glDrawTex绘制的矩形?

Opengl es 有没有办法转换glDrawTex绘制的矩形?,opengl-es,Opengl Es,正如OpenGL规范所述,所有的变换都会被设计忽略,但是有没有一种简单的方法可以像glDrawTex那样绘制纹理,但是之前使用矩阵变换像素?你不能简单地修改glDrawTex函数的x/y/z参数,以便在你想要的位置变换纹理吗? 但若你们想旋转纹理,那个么只需使用两个三角形绘制带纹理的四边形。这很简单。假设您有OpenGL ES 1.1版: const float v[] = { 0, 0, 0, 0, 0, 128, 0, 1, 128, 0, 1,

正如OpenGL规范所述,所有的变换都会被设计忽略,但是有没有一种简单的方法可以像glDrawTex那样绘制纹理,但是之前使用矩阵变换像素?

你不能简单地修改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是纹理的大小)


这样,可以使用modelview矩阵修改纹理位置。此外,纹理矩阵可用于修改纹理应用于三角形的方式。

没有
glDrawTex
功能。也许你在想别的事情。你指的是什么函数?@Nicolas:最有可能的作者是在谈论OpenGL ES的OES_draw_扩展,它提供了glDrawTexOES函数。是的,我很抱歉混淆了。谢谢你的回答,但我知道我自己可以很容易地画一个四边形,但我只是想知道是否有一个替代方案不需要我分配另一个浮点数组并通过总线发送数据。但是,因为它只是几行代码,我会将它标记为已应答。