void GenerateSquareVBO() { Vector3[] vecs = new Vector3[4]; uint[] inds = new uint[4]; Vector3[] texs = new Vector3[4]; Vector4[] cols = new Vector4[4]; Vector3[] nrms = new Vector3[4]; for (uint u = 0; u < 4; u++) { inds[u] = u; } for (int c = 0; c < 4; c++) { cols[c] = new Vector4(1, 1, 1, 1); nrms[c] = new Vector3(0, 0, 1); } vecs[0] = new Vector3(1, 0, 0); texs[0] = new Vector3(1, 0, 0); vecs[1] = new Vector3(1, 1, 0); texs[1] = new Vector3(1, 1, 0); vecs[2] = new Vector3(0, 0, 0); texs[2] = new Vector3(0, 0, 0); vecs[3] = new Vector3(0, 1, 0); texs[3] = new Vector3(0, 1, 0); Square = new VBO() { Vertices = vecs.ToList(), Indices = inds.ToList(), TexCoords = texs.ToList(), Colors = cols.ToList(), Normals = nrms.ToList() }; Square.GenerateVBO(); }
/// <summary> /// Generates a line. /// </summary> void GenerateLineVBO() { Vector3[] vecs = new Vector3[2]; uint[] inds = new uint[2]; Vector3[] norms = new Vector3[2]; Vector3[] texs = new Vector3[2]; Vector4[] cols = new Vector4[2]; Vector3[] tangs = new Vector3[2]; for (uint u = 0; u < 2; u++) { inds[u] = u; tangs[u] = new Vector3(1f, 0f, 0f); } for (int n = 0; n < 2; n++) { norms[n] = new Vector3(0, 0, 1); } for (int c = 0; c < 2; c++) { cols[c] = new Vector4(1, 1, 1, 1); } Vector4[] BoneIDs = new Vector4[2]; Vector4[] BoneWeights = new Vector4[2]; Vector4[] BoneIDs2 = new Vector4[2]; Vector4[] BoneWeights2 = new Vector4[2]; for (int n = 0; n < 2; n++) { BoneIDs[n] = new Vector4(0, 0, 0, 0); BoneWeights[n] = new Vector4(0, 0, 0, 0); BoneIDs2[n] = new Vector4(0, 0, 0, 0); BoneWeights2[n] = new Vector4(0, 0, 0, 0); } vecs[0] = new Vector3(0, 0, 0); texs[0] = new Vector3(0, 0, 0); vecs[1] = new Vector3(1, 0, 0); texs[1] = new Vector3(1, 0, 0); Line = new VBO() { Vertices = vecs.ToList(), Indices = inds.ToList(), Normals = norms.ToList(), Tangents = tangs.ToList(), TexCoords = texs.ToList(), Colors = cols.ToList(), BoneIDs = BoneIDs.ToList(), BoneWeights = BoneWeights.ToList(), BoneIDs2 = BoneIDs2.ToList(), BoneWeights2 = BoneWeights2.ToList() }; Line.GenerateVBO(); }
/// <summary> /// Generates a square. /// </summary> void GenerateSquareVBO() { Vector3[] vecs = new Vector3[6]; uint[] inds = new uint[6]; Vector3[] norms = new Vector3[6]; Vector3[] texs = new Vector3[6]; Vector4[] cols = new Vector4[6]; Vector4[] BoneIDs = new Vector4[6]; Vector4[] BoneWeights = new Vector4[6]; Vector4[] BoneIDs2 = new Vector4[6]; Vector4[] BoneWeights2 = new Vector4[6]; Vector3[] tangs = new Vector3[6]; for (uint n = 0; n < 6; n++) { inds[n] = n; tangs[n] = new Vector3(1, 0, 0); norms[n] = new Vector3(0, 0, 1); cols[n] = new Vector4(1, 1, 1, 1); BoneIDs[n] = new Vector4(0, 0, 0, 0); BoneWeights[n] = new Vector4(0, 0, 0, 0); BoneIDs2[n] = new Vector4(0, 0, 0, 0); BoneWeights2[n] = new Vector4(0, 0, 0, 0); } vecs[0] = new Vector3(1, 0, 0); texs[0] = new Vector3(1, 0, 0); vecs[1] = new Vector3(1, 1, 0); texs[1] = new Vector3(1, 1, 0); vecs[2] = new Vector3(0, 1, 0); texs[2] = new Vector3(0, 1, 0); vecs[3] = new Vector3(1, 0, 0); texs[3] = new Vector3(1, 0, 0); vecs[4] = new Vector3(0, 1, 0); texs[4] = new Vector3(0, 1, 0); vecs[5] = new Vector3(0, 0, 0); texs[5] = new Vector3(0, 0, 0); Square = new VBO() { Vertices = vecs.ToList(), Indices = inds.ToList(), Normals = norms.ToList(), Tangents = tangs.ToList(), TexCoords = texs.ToList(), Colors = cols.ToList(), BoneIDs = BoneIDs.ToList(), BoneWeights = BoneWeights.ToList(), BoneIDs2 = BoneIDs2.ToList(), BoneWeights2 = BoneWeights2.ToList() }; Square.GenerateVBO(); }
/// <summary> /// Generates a box. /// </summary> void GenerateBoxVBO() { // TODO: Optimize? Vector3[] vecs = new Vector3[24]; uint[] inds = new uint[24]; Vector3[] norms = new Vector3[24]; Vector3[] texs = new Vector3[24]; Vector4[] cols = new Vector4[24]; Vector3[] tangs = new Vector3[24]; for (uint u = 0; u < 24; u++) { inds[u] = u; tangs[u] = new Vector3(1f, 0f, 0f); } for (int t = 0; t < 24; t++) { texs[t] = new Vector3(0, 0, 0); } for (int n = 0; n < 24; n++) { norms[n] = new Vector3(0, 0, 1); // TODO: Accurate normals somehow? Do lines even have normals? } for (int c = 0; c < 24; c++) { cols[c] = new Vector4(1, 1, 1, 1); } Vector4[] BoneIDs = new Vector4[24]; Vector4[] BoneWeights = new Vector4[24]; Vector4[] BoneIDs2 = new Vector4[24]; Vector4[] BoneWeights2 = new Vector4[24]; for (int n = 0; n < 24; n++) { BoneIDs[n] = new Vector4(0, 0, 0, 0); BoneWeights[n] = new Vector4(0, 0, 0, 0); BoneIDs2[n] = new Vector4(0, 0, 0, 0); BoneWeights2[n] = new Vector4(0, 0, 0, 0); } int i = 0; int zero = -1; // Ssh. vecs[i] = new Vector3(zero, zero, zero); i++; vecs[i] = new Vector3(1, zero, zero); i++; vecs[i] = new Vector3(1, zero, zero); i++; vecs[i] = new Vector3(1, 1, zero); i++; vecs[i] = new Vector3(1, 1, zero); i++; vecs[i] = new Vector3(zero, 1, zero); i++; vecs[i] = new Vector3(zero, 1, zero); i++; vecs[i] = new Vector3(zero, zero, zero); i++; vecs[i] = new Vector3(zero, zero, 1); i++; vecs[i] = new Vector3(1, zero, 1); i++; vecs[i] = new Vector3(1, zero, 1); i++; vecs[i] = new Vector3(1, 1, 1); i++; vecs[i] = new Vector3(1, 1, 1); i++; vecs[i] = new Vector3(zero, 1, 1); i++; vecs[i] = new Vector3(zero, 1, 1); i++; vecs[i] = new Vector3(zero, zero, 1); i++; vecs[i] = new Vector3(zero, zero, zero); i++; vecs[i] = new Vector3(zero, zero, 1); i++; vecs[i] = new Vector3(1, zero, zero); i++; vecs[i] = new Vector3(1, zero, 1); i++; vecs[i] = new Vector3(1, 1, zero); i++; vecs[i] = new Vector3(1, 1, 1); i++; vecs[i] = new Vector3(zero, 1, zero); i++; vecs[i] = new Vector3(zero, 1, 1); i++; Box = new VBO() { Vertices = vecs.ToList(), Indices = inds.ToList(), Normals = norms.ToList(), Tangents = tangs.ToList(), TexCoords = texs.ToList(), Colors = cols.ToList(), BoneIDs = BoneIDs.ToList(), BoneWeights = BoneWeights.ToList(), BoneIDs2 = BoneIDs2.ToList(), BoneWeights2 = BoneWeights2.ToList() }; Box.GenerateVBO(); }
/// <summary> /// Generates the VBO if not done already. /// </summary> public void GenerateVBO() { vbo.GenerateVBO(); VBOGenned = true; }