Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- render::Mesh *Cube(render::Graphics3D *g3d, short scaleX = 1, short scaleY = 1, short scaleZ = 1)
- {
- // v6----- v5
- // /| /|
- // v1------v0|
- // | | | |
- // | |v7---|-|v4
- // |/ |/
- // v2------v3
- short vertices[] = {1,1,1,-1,1,1,-1,-1,1, // v0-v1-v2 front
- 1,1,1,-1,-1,1,1,-1,1, // v0-v2-v3 front
- 1,1,1,1,-1,1,1,-1,-1, // v0-v3-v4 right
- 1,1,1,1,-1,-1,1,1,-1, // v0-v4-v5 right
- 1,1,1,1,1,-1,-1,1,-1, // v0-v5-v6 top
- 1,1,1,-1,1,-1,-1,1,1, // v0-v6-v1 top
- -1,1,1,-1,1,-1,-1,-1,-1, // v1-v6-v7 left
- -1,1,1,-1,-1,-1,-1,-1,1, // v1-v7-v2 left
- -1,-1,-1,1,-1,-1,1,-1,1, // v7-v4-v3 bottom
- -1,-1,-1,1,-1,1,-1,-1,1, // v7-v3-v2 bottom
- 1,-1,-1,-1,-1,-1,-1,1,-1, // v4-v7-v6 back
- 1,-1,-1,-1,1,-1,1,1,-1}; // v4-v6-v5 back
- short *coords = (short*)KAJAK3D_ALLOC(6*2*3*3*sizeof(short)); // 6 sivua, 2 kolmioo, 3 verteksiä, 3 shorttia each
- for(int i=0;i<6*2*3*3;i+=3) {
- coords[i] = (short)(vertices[i] * scaleX);
- coords[i+1] = (short)(vertices[i+1] * scaleY);
- coords[i+2] = (short)(vertices[i+2] * scaleZ);
- }
- unsigned short *kolmiot = (unsigned short*)KAJAK3D_ALLOC(6*2*3*sizeof(unsigned short)); // 6 sivua, 2 kolmiota per sivu, 3 kulmaa (shorttia) per kolmio
- for(int i=0; i<36; i++) {
- kolmiot[i] = (unsigned short)i;
- };
- // VertexArray - tässä on verteksit
- core::Ref<render::VertexArray> verteksit = KAJAK3D_NEW render::VertexArray(36, 3, sizeof(short)); // 8 verteksiä, 3 komponenttia, short on komponentin koko
- verteksit->set(0, 36, coords); // verteksit alken 0, pituus 36, taulukosta coords
- // IndexBuffer - tässä on kolmiot
- core::Ref<render::IndexBuffer> indexBuffer = KAJAK3D_NEW render::TriangleListArray(render::StaticIndexBuffer, kolmiot, 6*2*3); // 6 sivua, 2 kolmiota per sivu, 3 kulmaa per kolmio
- // VertexBuffer - tässä on verteksit ja niiden värit
- core::Ref<render::VertexBuffer> vertexBuffer = g3d->createNewVertexBuffer(render::StaticVertexBuffer);
- vertexBuffer->setPositions(verteksit, 1.0f, 0); // verteksitaulukko, skaala, ??
- vertexBuffer->setDefaultColor(0xFF00FF00);
- // Normaalit
- core::Ref<render::VertexArray> normalsArray = render::VertexArray::generateNormals(verteksit, indexBuffer);
- vertexBuffer->setNormals(normalsArray);
- // Laitetaan kaikki paska meshiin
- render::Mesh *mesh = KAJAK3D_NEW render::Mesh(vertexBuffer, indexBuffer, 0);
- // Vapautetaan muistit
- KAJAK3D_FREE(coords);
- KAJAK3D_FREE(kolmiot);
- return mesh;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement