2013-05-02 109 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中的值以匹配我想要绘制的对象的数量...

错误往往在键盘和椅子之间!