2009-08-04 180 views
1

我是OpenGL ES中的新手。我早些時候用objective-c開發了可可遊戲。現在我想用OpenGL ES爲iPhone開發3D遊戲。我在初學階段。我可以通過OpenGL ES創建三角形,正方形,立方體,金字塔。但是,如果我們有我們的任何.png圖像,我們必須在我們的遊戲中渲染它,那麼我們必須做什麼?爲此,我們需要其他工具如統一或什麼?我無法準確理解它。或者我們必須像在apple.developer.com站點中給出的GLSprite示例那樣來完成它。在那個例子中,他們通過使用一個teapot.h文件來繪製一個茶壺。 teapot.h文件包含一些點,並通過使用這些點,他們繪製了三角形,形成了一個茶壺。那麼這是一種繪製任何圖像的方式。我想我在錯誤的方向思考,所以請指導我。如何使用OpenGL ES渲染圖像?

預先感謝您

回答

4

吸引你需要首先定義的圖像可以被應用到幾何圖像:

float w = width/2; 
float h = height/2; 

float x = 10.0f; 
float y = 10.0f; 
float z = 0.0f; 

float scaleX = 1.0f; 
float scaleY = 1.0f; 
float scaleZ = 1.0f; 

const GLfloat squareVertices[] = { 
    -w, -h, 
    w, -h, 
    -w, h, 
    w, h, 
}; 

const GLfloat textureCoords[] = { 
    0, 0, 
    1, 0, 
    0, 1, 
    1, 1, 
}; 

然後,您可以將您的紋理和渲染這個幾何:

glEnable(GL_TEXTURE_2D); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_VERTEX_ARRAY); 

// apply texture -- how to create and bind a physical image is a whole different question 
glBindTexture(GL_TEXTURE_2D, yourTextureID); 

glVertexPointer(2, GL_FLOAT, 0, squareVertices); 
glTexCoordPointer(2, GL_FLOAT, 0, textureCoords); 

glPushMatrix(); 
    glTranslatef(x, y, z); 
    glScalef(scaleX, scaleY, scaleZ); 
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 
glPopMatrix(); 

glDisable(GL_TEXTURE_2D); 
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
glDisableClientState(GL_VERTEX_ARRAY); 

請注意,這些代碼片段假定您已設置工作視圖/投影。

+0

我們可以在不使用紋理的情況下渲染圖像嗎? – onmyway133 2013-06-04 03:09:31

0

曾經是SDK中緊急迫降樣品也是一個良好的開端(顯然音頻代碼被打破,這就是爲什麼它被刪除,但OpenGL的代碼還是不錯的)

你可以找到示例here的鏈接。