[SOLVED]Android OpenGL NDK

Fórumok

Üdv!
Ismét problémába ütköztem :)
A kérdés a következő: Androidra kéne OpenGL programot írni... Szerencsére rátaláltam az NDK-ra amivel natív C kódban tudok írni. Ezzel nincs is gond, a gáz az, hogy nem tudok OpenGL elemeket megjeleníteni. Ugyanis a régi glVertex() már nincs benne az android által használt GLES library-ben. Ezért akkor, gondoltam belekezdek a csúcstömbökbe. Találtam is jó példakódot (hello-gl2) nézegettem stb. de mivel a transzormációk nem voltak, ezért max 2D-ben tudnék tologatni dolgokat, koordináták alapján. Aztán rátaláltam erre a san-angeles sample-re ami jó volt mivel beimportálta részben az OpenGL transzformációkat. A gáz az, hogy elég összetett a kód... Próbáltam szétszedni sikerült is lebutítani, hogy csak a ground legyen, de aztán eltűnt minden a program crashel induláskor. (a problémás rész a glDrawArrays) fordító szerint OK:
a háromszög amit meg kéne jeleníteni:

const GLfloat TriangleVertices[] = { 0.0f, 0.5f, 0.0f, -0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f };

a renderben a megjelenítés:

glPushMatrix();
glVertexPointer(3, GL_FLOAT, 0, TriangleVertices);
glDrawArrays(GL_TRIANGLES, 0, 9); //ez a problémás sor
glPopMatrix();

Bármilyen help jól jön akár egy kicsi működő példakód ahonnal el tudnék indulni, akár egy ötlet, hogy más megjelenítési próbálkozás stb.
thx:RiseR

Hozzászólások

glDrawArrays() -nak syerintem utolsó paraméternek 3-at adj meg, hiszen három elemről van szó. (azt tudja a glVertexPointer alapján, hogy három koordinátája van egy-egy elemnek)

Itt van:

glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (float)width / height, 0.5f, 150);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

Mivel nincs bent alapból a gluPerspective ezért azt meg kellett írni (kódból szedtem)

void gluPerspective(GLfloat fovy, GLfloat aspect,
GLfloat zNear, GLfloat zFar)
{
GLfloat xmin, xmax, ymin, ymax;

ymax = zNear * (GLfloat)tan(fovy * PI / 360);
ymin = -ymax;
xmin = ymin * aspect;
xmax = ymax * aspect;

glFrustumx((GLfloat)(xmin * 65536), (GLfloat)(xmax * 65536),
(GLfloat)(ymin * 65536), (GLfloat)(ymax * 65536),
(GLfloat)(zNear * 65536), (GLfloat)(zFar * 65536));
}

---
Where there is a shell, there is a way.