En raison de problèmes de performances, j'ai dû transférer mon code android opengl de Java vers C. Je crois que j'ai transféré tout le code OpenGL, mais j'ai maintenant beaucoup d'erreurs avec la section de mon code qui dessine un bitmap en tant que texture à l'écran. Lorsque j'exécute le projet dans un émulateur, le code actuel n'affiche rien et semble avoir une fuite de mémoire car il prend lentement toute la mémoire et oblige les autres applications à se fermer.Problèmes de dessin OpenGL ES dans Android NDK
Voici le code qui contrôle cette partie:
Dans le fichier d'en-tête:
extern unsigned char colors[1024*512*3]; // 3 bytes per pixel
Dans le fichier c:
void appRender(int width, int height, unsigned char colors)
{
unsigned int textureID;
float vertices[] =
{
0.0f, 0.0f,
512.0f, 0.0f,
0.0f, 1024.0f,
512.0f, 1024.0f
};
float texture[] =
{
0.0f, 0.0f,
1.0f, 0.0f,
0.0f, 1.0f,
1.0f, 1.0f
};
unsigned char indices[] =
{
0, 1, 3,
0, 3, 2
};
UpdateView();
//onDraw
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glOrthof(0.0f, 320.0f, 430.0f, 0.0f, 1.0f, -1.0f);
//texture stuff
glGenTextures(1,&textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
//Different possible texture parameters, e.g
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 512, 1024, 0, GL_RGB ,GL_UNSIGNED_BYTE, colors);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 0, texture);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, indices);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
Toute aide serait grandement appréciée.
Je t'aime tellement en ce moment :) - déchire mes cheveux en essayant d'obtenir quelque chose à l'écran pendant plus de 2 heures - MERCI DE EXEMPLE! – torger
@torger ce code n'affiche rien, il est cassé d'une manière ou d'une autre. J'ai oublié comment je l'ai réparé, vous pouvez jeter un oeil à la page de code google pour "thelements" cependant, nous faisons un dessin assez simple là-bas. – RyanCheu
Je l'ai fait travailler haha - Je ne sais pas comment je l'ai fait :) - dois dire - il n'y a pas de meilleur sentiment que de voir ce carré blanc pour la première fois – torger