Retourner au sujet

  Message initiale datant du 09 September 2010 à 21h 36mn 37s

Code c++ :


enum // pour ne pas se mélanger les buffers wink
{
    vertex = 0,
    INDEX = 1,
    TEXCOORD = 2
};


//Cube Données

GLsizeiptr VertSz = 8 * 3 * sizeof(GLfloat);
GLfloat VertData[] = {
    -1.0f,-1.0f, 1.0f,
    -1.0f,-1.0f,-1.0f,
    -1.0f, 1.0f,-1.0f,
    -1.0f, 1.0f, 1.0f,

    1.0f,-1.0f, 1.0f,
    1.0f,-1.0f,-1.0f,
    1.0f, 1.0f,-1.0f,
    1.0f, 1.0f, 1.0f,};

GLsizeiptr IndexSz = 6 * 6 * sizeof(GLubyte);
GLubyte IndexData[] = {
    1,0,2,
    3,2,0,
    // gauche droite
    5,6,4,
    7,4,6,

    7,3,4,
    0,4,3,
    // face fond
    6,1,2,
    5,1,6,

    3,7,2,
    6,2,7,
    // haut bas
    1,5,0,
    4,0,5,};

GLsizeiptr CoordsSz = 8 * 2 * sizeof(GLfloat);
GLfloat CoordsData[] = {
    0.0f,0.0f, 1.0f,0.0f, 1.0f,1.0f, 0.0f,1.0f,
    1.0f,0.0f, 0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f,

    1.0f,0.0f, 0.0f,1.0f, 1.0f,0.0f, 1.0f,0.0f,
    0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f, 1.0f,0.0f,};


int BufferSz = 3;
GLuint BuffersId[BufferSz];

GLsizei VertexCount = 8;
GLsizei IndexCount = 36;


void End() // nettoyage de vram. Si tu oublie window$ devrait s'en charger..
{
    glDeleteBuffers(BufferSz, BufferName);
}

void Render(Vec3f *pos, Vec3f *rot) // fonction de rendu
{
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glPushMatrix();

    glRotatef(rot->x, 1,0,0);
    glRotatef(rot->y, 0,1,0);
    glRotatef(rot->z, 0,0,1);
    glTranslatef(pos->x, pos->y, pos->z);

    glBindBufferARB(GL_ARRAY_BUFFER, BuffersId[vertex]);
    glBufferDataARB(GL_ARRAY_BUFFER, VertexSz, VertexData, GL_STREAM_DRAW);
    glVertexPointer(3, GL_FLOAT, 0, 0);

    glBindBufferARB(GL_ARRAY_BUFFER, BuffersId[INDEX]);
    glBufferDataARB(GL_ARRAY_BUFFER, IndexSz, IndexData, GL_STREAM_DRAW);
    glIndexPointer(GL_UNSIGNED_BYTE, 0, 0);

    glBindBufferARB(GL_ARRAY_BUFFER, BuffersId[TEXCOORD]);
    glBufferDataARB(GL_ARRAY_BUFFER, CoordsSz, CoordsData, GL_STREAM_DRAW);
    glTexCoordPointer(2, GL_FLOAT, 0, 0);

    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glEnableClientState(GL_INDEX_ARRAY);

    glDrawElements(GL_TRIANGLES, IndexCount, GL_UNSIGNED_BYTE, IndexData); //RENDU !!

    glDisableClientState(GL_INDEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisableClientState(GL_VERTEX_ARRAY);

    glPopMatrix();
}

// 2010 copyright all rights reserved. PTDR !!



Voilou ! je t'avoue que j'ai misèré pour allèger le code au milieu de la jungle qu'est mon projet ( tout comme mon appart tongue)
Mais si tu connais opengl tu crée un ptit projet opengl de base et tu y ajoute ça. N'oublie pas glew.h.
Sinon je n'ai pas compris dans quel ordre tu les plaçais car tu me donnes comme example la même chose que ma première ligne de coords sauf que c'est 1/4 de texture que tu affiche. (ou 4x je sais plus)
En tout cas si comme tu dis, les coords n'étaient pas dans cet ordre, ca expliquerait mes ennuis.
Merci.



Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
85 invités en ligne
Aucun membre connecté
RSS Feed