opengl - vector a vbo

Odpowiedz Nowy wątek
2011-09-19 13:29
0

Witam,
mam taki problem: mam wczytywanie z pliku .obj, np dla wierzchołków jest struktura (dla normalnych i tekstury analogicznie tylko odpowiednio 3 i 2 współrzędne)

struct SEdge3
{
    GLfloat x;
    GLfloat y;
    GLfloat z;
    GLfloat w;
};

potem w klasie tego mojego obiektu

std::vector<SEdge3> edges;

Wszystko działa jak rysuję w ten sposób

while(triangle != triangles.end()){
    glVertex4fv(reinterpret_cast<const GLfloat *>(&edges[(*triangle).w1]));
    glVertex4fv(reinterpret_cast<const GLfloat *>(&edges[(*triangle).w2]));
    glVertex4fv(reinterpret_cast<const GLfloat *>(&edges[(*triangle).w3]));
    triangle++;
}

Ale muszę użyć vbo i nie wiem jak to przerobić... Jak robię tak to się w ogóle nie wyświetla.

GLuint id1;

glGenBuffersARB(1, &id1);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, id1);
glBufferDataARB(GL_ARRAY_BUFFER_ARB,edges.size()*sizeof(SEdge3),&edges[0],GL_STATIC_DRAW_ARB);

glEnableClientState(GL_VERTEX_ARRAY); 
glBindBufferARB(GL_ARRAY_BUFFER_ARB, id1);
glVertexPointer(3, GL_FLOAT,0,(char*)NULL);

glDrawArrays(GL_TRIANGLES,0,triangles.size());

glDisableClientState(GL_VERTEX_ARRAY);

glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
glDeleteBuffersARB(1, &id1);

Pozostało 580 znaków

2011-11-17 15:33
jackolli
0

zmień

glVertexPointer(3, GL_FLOAT,0,(char*)NULL);

na

glVertexPointer(4, GL_FLOAT,0,(char*)NULL);

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0