Render .h Blender Export для iPhone с openGL ES 1.1 - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть изображение блендера, экспортированное с помощью сценария экспорта Jeff LaMarche .h.Я пытаюсь заставить его рендерить в OpenGL ES 1.1.Я не думаю, что передаю свои вершины, нормали и текстурные координаты правильно.Кто-нибудь может мне помочь.Вот что у меня есть.

Это файл .h с моими вершинами и т. Д.

struct vertexDataTextured
{
    GLKVector3      vertex;
    GLKVector3      normal;
    GLKVector2      texCoord;
};
typedef struct vertexDataTextured vertexDataTextured;
typedef vertexDataTextured* vertexDataTexturedPtr;


static const vertexDataTextured MeshVertexData[] = {
    {/*v:*/{0.351562, 0.828125, -0.242188}, /*n:*/{0.183599, 0.982971, 0.005310}, /*t:*/{0.199397, 0.671493}},
    {/*v:*/{0.445312, 0.781250, -0.156250}, /*n:*/{0.715171, 0.222724, 0.662465}, /*t:*/{0.216226, 0.665719}},
    {/*v:*/{0.476562, 0.773438, -0.242188}, /*n:*/{0.964446, 0.263863, 0.012665}, /*t:*/{0.216737, 0.679097}},
    {/*v:*/{-0.476562, 0.773438, -0.242188}, /*n:*/{-0.964446, 0.263863, 0.012665}, /*t:*/{0.052251, 0.677297}},
    {/*v:*/{-0.445312, 0.781250, -0.156250}, /*n:*/{-0.715171, 0.222724, 0.662465}, /*t:*/{0.053356, 0.663955}},

...

и вот мой код для рисования

...

glClearColor(1.0f, 1.0f, 0.0f, 1.0f); 
glClear(GL_COLOR_BUFFER_BIT); 


glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glTranslatef(0.0f,-0.3f,-0.5f);


glVertexPointer(3, GL_FLOAT, 0, MeshVertexData); 
glEnableClientState(GL_VERTEX_ARRAY); 


glNormalPointer(GL_FLOAT, 0 , MeshVertexData);
glEnableClientState(GL_NORMAL_ARRAY);


glEnable(GL_TEXTURE_2D);                                             
glEnable(GL_BLEND);                                                  

glTexCoordPointer(2, GL_FLOAT,0,MeshVertexData);                      
glEnableClientState(GL_TEXTURE_COORD_ARRAY);                        

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 

//glTranslatef(0.0f,-1.0f,-1.5f); 

glDrawArrays(GL_TRIANGLES, 0, sizeof(MeshVertexData)/ sizeof(vertexDataTextured));                               



glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 

Похоже, мой экран повсюду выбрасывал треугольники.Любая помощь для этого N00B очень ценится.Спасибо

1 Ответ

1 голос
/ 20 февраля 2012

Вы устанавливаете свой шаг на 0. Это должно быть sizeof (vertexDataTextured).Он сообщает OpenGL, сколько байтов существует между одной вершиной (или нормалью, или координатой текстуры) и следующей.

...