我想使用OGL ES旋轉2D圖像。加載後,我可以將其移動通過屏幕,但是當試圖通過其中心旋轉圖像時,它具有奇怪的行爲,因爲旋轉中心是屏幕左下角,而不是圖像本身的中心。從其中心OpenGL ES 1.1圖像旋轉
谷歌搜索我讀過,我可以推動當前的矩陣,改變我需要的任何東西(翻譯座標,旋轉圖像等),然後彈出矩陣回到前一個矩陣狀態......我做了它但仍然不工作,因爲我正在尋找(但至少現在看起來原來的旋轉座標不是左下角......)
有什麼想法?任何人都可以發現我的問題在哪裏?
任何幫助將不勝感激!謝謝!!
void drawImage(Image *img)
{
GLfloat fX = (GLfloat)img->x;
GLfloat fY = (GLfloat)(flipY(img->m_height+img->y));
GLfloat coordinates[] = { 0, img->m_textureHeight, img->m_textureWidth, img->m_textureHeight, 0, 0, img->m_textureWidth, 0 };
GLfloat vertices[] =
{
fX, fY, 0.0,
img->m_width+fX, fY, 0.0,
fX, img->m_height+fY, 0.0,
img->m_width+fX, img->m_height+fY, 0.0
};
//Push and change de matrix, translate coords, rotate and scale image and then pop the matrix
glPushMatrix(); //push texture matrix
glTranslatef((int)fX, (int)fY, 0.0); //translate texture matrix
// rotate
if (img->rotation != 0.0f)
glRotatef(-img->rotation, 0.0f, 0.0f, 1.0f);
// scale
if (img->scaleX != 1.0f || img->scaleY != 1.0f)
glScalef(img->scaleX, img->scaleY, 1.0f);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glColor4f(1.0, 0.0, 0.0, 1.0);
glBindTexture(GL_TEXTURE_2D, img->m_name);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 0, coordinates);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glPopMatrix();
}
代碼格式化。 – genpfault 2010-10-21 17:30:28
我做到了,但沒有正常工作。對不起...現在它的工作;) – Maruku 2010-10-21 17:32:59