2011-06-24 3 views
-1
float pfIdentity[] = 
{ 
    -1.0f,0.0f,0.0f,0.0f, 
    0.0f,1.0f,0.0f,0.0f, 
    0.0f,0.0f,1.0f,0.0f, 
    0.0f,0.0f,0.0f,1.0f 
}; 

==================================== ====================================================matrice de projection orthogonale dans Opengl-es 2,0

const char* pszVertShader = "\ 
    attribute highp vec4 myVertex;\ 
    uniform mediump mat4 myPMVMatrix;\ 
    invariant gl_Position;\ 
    void main(void)\ 
    {\ 
     gl_Position = myPMVMatrix * myVertex;\ 
}"; 

=============================================== ======================

for(int i = 0; i < 80000; ++i) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    int i32Location = glGetUniformLocation(uiProgramObject, "myPMVMatrix"); 
    glUniformMatrix4fv(i32Location, 1, GL_FALSE, pfIdentity); 
    glEnableVertexAttribArray(VERTEX_ARRAY); 
    glVertexAttribPointer(VERTEX_ARRAY, 3, GL_FLOAT, GL_FALSE, 0, 0); 
    glDrawArrays(GL_TRIANGLES, 0,i); 
    eglSwapBuffers(eglDisplay, eglSurface); 
} 

return 0; 
} 

ps: je suis en train de faire opengl-es dans ubuntu 10.10 avec en-têtes Cronos, son un émulateur pour opengl- es 2.0 dans Linux.

Répondre

1

Vous n'avez une projection du tout. La projection-Model-View matrice vous réglez la myPMVMatrix uniforme est

float pfIdentity[] = 
{ 
    -1.0f,0.0f,0.0f,0.0f, 
    0.0f,1.0f,0.0f,0.0f, 
    0.0f,0.0f,1.0f,0.0f, 
    0.0f,0.0f,0.0f,1.0f 
}; 

/* ... */ 

glUniformMatrix4fv(i32Location, 1, GL_FALSE, pfIdentity); 

BTW: L'idée est d'uniformes, que vous ne les définissez pas à chaque itération primitive.

Quoi qu'il en soit, c'est une matrice d'identité, et puisqu'elle est la seule transformation appliquée il va juste passer à travers les sommets car ils sont à l'étape de fragment. La solution à votre problème consiste à lui appliquer une projection orthographique, c'est-à-dire à multiplier cette matrice par une matrice de projection ortho et à utiliser à la place le résultat de cette opération. http://www.songho.ca/opengl/gl_projectionmatrix.html

+0

HI je ne suis pas en mesure de le faire, je ne sais pas où changer la chose si vous pouviez me dire il est facile pour moi d'aller loin avec cela. –

+2

Regardez l'article sur les matrices de projection que j'ai posté. Lisez-le, comprenez-le, utilisez vos nouvelles connaissances pour construire une matrice de projection orthographique et fournissez-la au shader en utilisant glUniformMatrix. – datenwolf

Questions connexes