2013-05-02 104 views
0

我的OpenGL ES 2.0 for iPhone出現了問題。 我想提請使用此代碼紋理簡單的圓形:OpenGL ES 2.0中的繪圖圈

double qualite = 40.0f; 
double rayon = 0.5; 
double TWOPI=2*M_PI; 
double step = TWOPI/qualite; 

// CENTRE DU CERCLE 
// X Y Z NMR1 
gCircleVertexData[0]=0.0f; 
gCircleVertexData[1]=0.0f; 
gCircleVertexData[2]=0.0f; 

// NORMALES X Y Z 
gCircleVertexData[3]=0.0f; 
gCircleVertexData[4]=0.0f; 
gCircleVertexData[5]=1.0f; 

// TEXTURES 
gCircleVertexData[6]=0.5f; 
gCircleVertexData[7]=0.5f; 
int j=8; 
int k=0; 
for(GLfloat i = 0.0f; i <= TWOPI; i+=step) 
{ 
    // X Y Z NMR2 
    gCircleVertexData[j]=rayon*sinf(i); 
    gCircleVertexData[j+1]=rayon*cosf(i); 
    gCircleVertexData[j+2]=0.0f; 

    // NORMALES X Y Z 
    gCircleVertexData[j+3]=0.0f; 
    gCircleVertexData[j+4]=0.0f; 
    gCircleVertexData[j+5]=1.0f; 

    // TEXTURES 
    gCircleVertexData[j+6]=0.5+0.5*cosf(i); 
    gCircleVertexData[j+7]=0.5+0.5*sinf(i); 
    j=j+8; 
    k++; 
} 

憑藉30.0質量都工作正常,但如果我去上了圓的一部分不會出現。 這是我如何綁定的對象:

​​

這是怎麼我會畫出來:

//----------------------------------- Le DISQUE MOBILE -------------------------------// 
// Activation de la texture 
glEnable(GL_TEXTURE0); 
glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, _disqueMobileTexture); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

// Activation du shader 
glUseProgram(_program2); 

// Verrouillage du VAO pour l'utiliser 
glBindVertexArrayOES(_vertexArrayCercle); 

//ON CALCUL LES MATRICES 
baseModelViewMatrix = GLKMatrix4Rotate(baseModelViewMatrix, 0, 1.0f, 1.0f, 1.0f); 
modelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, -0.001f); 
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix,_rotation/8, 0, 0, 1.0f); 
modelViewMatrix = GLKMatrix4Multiply(baseModelViewMatrix, modelViewMatrix); 

_normalMatrix = GLKMatrix3InvertAndTranspose(GLKMatrix4GetMatrix3(modelViewMatrix), NULL); 
_modelViewProjectionMatrix = GLKMatrix4Multiply(projectionMatrix, modelViewMatrix); 
_rotation += self.timeSinceLastUpdate * 0.5f; 

// ON ENVOI LES MATRICE DANS LE SHADER 
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m); 
glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m); 
glUniform1i(uniforms[UNIFORM_TEXTURE], 0); 

// DESSIN DU CUBE AVEC LE SHADER 
glDrawArrays(GL_TRIANGLE_FAN, 0, 36); 

// Désactivation du VAO 
glBindVertexArrayOES(0); 

// Désactivation du shader 
glUseProgram(0); 
glDisable(GL_TEXTURE0); 
glDisable(GL_TEXTURE_2D); 

我的社交圈是用30質量真難看!我也使用一個簡單的着色器。

回答

0

我找到了!這是一個非常粗心的錯誤...我忘了增加glDrawArrays中的值以匹配我想要繪製的對象的數量...

錯誤往往在鍵盤和椅子之間!