/src/Draw.cpp
C++ | 689 lines | 554 code | 63 blank | 72 comment | 12 complexity | f8f7a3eb3347233c9cfa6a9ca6e51e4b MD5 | raw file
- //------------------------------------//
- //
- // Draw.cpp
- //
- // Author: ayufan (ayufan[at]o2.pl)
- // Project: ayuine2
- // Date: 2006-8-4
- //
- //------------------------------------//
-
- #include "StdAfx.hpp"
-
- namespace ayuine
- {
- //------------------------------------//
- // Sphere Primitive
-
- static vec3 SphereVerts[] = {
- vec3(-0.995273f, -0.000000f, -0.097119f),
- vec3(-0.987312f, -0.123289f, 0.100072f),
- vec3(-0.987312f, 0.123288f, 0.100072f),
- vec3(-0.987312f, 0.123288f, 0.100072f),
- vec3(-0.963183f, -0.251881f, -0.093987f),
- vec3(-0.963183f, 0.251880f, -0.093987f),
- vec3(-0.963183f, 0.251880f, -0.093987f),
- vec3(-0.952050f, -0.129092f, -0.277373f),
- vec3(-0.952050f, 0.129092f, -0.277373f),
- vec3(-0.952050f, 0.129092f, -0.277373f),
- vec3(-0.950242f, -0.000000f, 0.311512f),
- vec3(-0.927283f, -0.362369f, 0.093987f),
- vec3(-0.927283f, 0.362369f, 0.093987f),
- vec3(-0.923841f, -0.234086f, 0.302857f),
- vec3(-0.923841f, 0.234085f, 0.302857f),
- vec3(-0.923841f, 0.234085f, 0.302857f),
- vec3(-0.894427f, -0.000000f, -0.447214f),
- vec3(-0.884995f, -0.353641f, -0.302857f),
- vec3(-0.884995f, 0.353641f, -0.302857f),
- vec3(-0.871220f, -0.480585f, -0.100072f),
- vec3(-0.871220f, 0.480585f, -0.100072f),
- vec3(-0.846103f, -0.455163f, 0.277373f),
- vec3(-0.846103f, 0.455163f, 0.277373f),
- vec3(-0.845443f, -0.110489f, 0.522512f),
- vec3(-0.845443f, 0.110489f, 0.522512f),
- vec3(-0.845443f, 0.110489f, 0.522512f),
- vec3(-0.842238f, -0.208876f, -0.496997f),
- vec3(-0.842238f, 0.208875f, -0.496997f),
- vec3(-0.842238f, 0.208875f, -0.496997f),
- vec3(-0.805193f, -0.585007f, 0.097119f),
- vec3(-0.805193f, 0.585007f, 0.097119f),
- vec3(-0.804159f, -0.326071f, 0.496997f),
- vec3(-0.804159f, 0.326071f, 0.496997f),
- vec3(-0.774370f, -0.000000f, -0.632733f),
- vec3(-0.768762f, -0.558538f, -0.311512f),
- vec3(-0.768762f, 0.558538f, -0.311512f),
- vec3(-0.748921f, -0.407551f, -0.522512f),
- vec3(-0.748921f, 0.407551f, -0.522512f),
- vec3(-0.726285f, -0.680070f, -0.100072f),
- vec3(-0.726285f, 0.680070f, -0.100072f),
- vec3(-0.723607f, -0.525731f, 0.447214f),
- vec3(-0.723607f, 0.525731f, 0.447214f),
- vec3(-0.703586f, -0.000000f, 0.710610f),
- vec3(-0.694346f, -0.664039f, 0.277373f),
- vec3(-0.694346f, 0.664039f, 0.277373f),
- vec3(-0.690990f, -0.212688f, -0.690866f),
- vec3(-0.690990f, 0.212688f, -0.690867f),
- vec3(-0.690990f, 0.212688f, -0.690867f),
- vec3(-0.684037f, -0.234086f, 0.690866f),
- vec3(-0.684037f, 0.234085f, 0.690866f),
- vec3(-0.684037f, 0.234085f, 0.690866f),
- vec3(-0.631180f, -0.769921f, 0.093987f),
- vec3(-0.631180f, 0.769921f, 0.093987f),
- vec3(-0.626478f, -0.455163f, 0.632733f),
- vec3(-0.626479f, 0.455163f, 0.632733f),
- vec3(-0.619034f, -0.586326f, -0.522512f),
- vec3(-0.619034f, 0.586326f, -0.522512f),
- vec3(-0.616500f, -0.000000f, -0.787355f),
- vec3(-0.609811f, -0.732399f, -0.302857f),
- vec3(-0.609811f, 0.732399f, -0.302857f),
- vec3(-0.569213f, -0.413557f, -0.710610f),
- vec3(-0.569213f, 0.413557f, -0.710610f),
- vec3(-0.558611f, -0.664039f, 0.496997f),
- vec3(-0.558611f, 0.664039f, 0.496997f),
- vec3(-0.537193f, -0.838207f, -0.093987f),
- vec3(-0.537193f, 0.838206f, -0.093987f),
- vec3(-0.531046f, -0.123288f, 0.838325f),
- vec3(-0.531046f, 0.123288f, 0.838325f),
- vec3(-0.531046f, 0.123288f, 0.838325f),
- vec3(-0.508111f, -0.806288f, 0.302857f),
- vec3(-0.508111f, 0.806288f, 0.302857f),
- vec3(-0.502093f, -0.212399f, -0.838325f),
- vec3(-0.502093f, 0.212399f, -0.838326f),
- vec3(-0.502093f, 0.212399f, -0.838326f),
- vec3(-0.498759f, -0.362369f, 0.787355f),
- vec3(-0.498759f, 0.362369f, 0.787355f),
- vec3(-0.458918f, -0.736470f, -0.496997f),
- vec3(-0.458918f, 0.736470f, -0.496997f),
- vec3(-0.434008f, -0.578222f, 0.690867f),
- vec3(-0.434008f, 0.578222f, 0.690867f),
- vec3(-0.428525f, -0.000000f, -0.903530f),
- vec3(-0.422351f, -0.900892f, 0.100072f),
- vec3(-0.422351f, 0.900891f, 0.100072f),
- vec3(-0.416974f, -0.865562f, -0.277373f),
- vec3(-0.416974f, 0.865562f, -0.277373f),
- vec3(-0.415806f, -0.591446f, -0.690866f),
- vec3(-0.415806f, 0.591446f, -0.690867f),
- vec3(-0.366337f, -0.769921f, 0.522512f),
- vec3(-0.366337f, 0.769921f, 0.522512f),
- vec3(-0.358234f, -0.000000f, 0.933632f),
- vec3(-0.357158f, -0.411884f, -0.838325f),
- vec3(-0.357158f, 0.411884f, -0.838326f),
- vec3(-0.346684f, -0.251881f, 0.903530f),
- vec3(-0.346684f, 0.251881f, 0.903530f),
- vec3(-0.346684f, 0.251881f, 0.903530f),
- vec3(-0.307556f, -0.946561f, -0.097119f),
- vec3(-0.307556f, 0.946561f, -0.097119f),
- vec3(-0.293641f, -0.903734f, 0.311512f),
- vec3(-0.293641f, 0.903734f, 0.311512f),
- vec3(-0.289817f, -0.210565f, -0.933632f),
- vec3(-0.289817f, 0.210565f, -0.933632f),
- vec3(-0.289817f, 0.210565f, -0.933632f),
- vec3(-0.281357f, -0.466957f, 0.838326f),
- vec3(-0.281357f, 0.466957f, 0.838326f),
- vec3(-0.276393f, -0.850651f, -0.447214f),
- vec3(-0.276393f, 0.850651f, -0.447214f),
- vec3(-0.239294f, -0.736470f, -0.632733f),
- vec3(-0.239294f, 0.736470f, -0.632733f),
- vec3(-0.219625f, -0.000000f, -0.975584f),
- vec3(-0.217420f, -0.669150f, 0.710610f),
- vec3(-0.217420f, 0.669150f, 0.710610f),
- vec3(-0.190509f, -0.586326f, -0.787355f),
- vec3(-0.190509f, 0.586326f, -0.787355f),
- vec3(-0.187842f, -0.977088f, 0.100072f),
- vec3(-0.187842f, 0.977088f, 0.100072f),
- vec3(-0.177680f, -0.129092f, 0.975584f),
- vec3(-0.177680f, 0.129092f, 0.975584f),
- vec3(-0.177680f, 0.129092f, 0.975584f),
- vec3(-0.171426f, -0.945345f, -0.277373f),
- vec3(-0.171426f, 0.945345f, -0.277373f),
- vec3(-0.156175f, -0.838207f, 0.522512f),
- vec3(-0.156175f, 0.838207f, 0.522512f),
- vec3(-0.132421f, -0.407551f, -0.903530f),
- vec3(-0.132421f, 0.407551f, -0.903530f),
- vec3(-0.110700f, -0.340701f, 0.933632f),
- vec3(-0.110700f, 0.340701f, 0.933632f),
- vec3(-0.067868f, -0.208875f, -0.975584f),
- vec3(-0.067868f, 0.208875f, -0.975584f),
- vec3(-0.067868f, 0.208875f, -0.975584f),
- vec3(-0.062854f, -0.950961f, 0.302857f),
- vec3(-0.062854f, 0.950961f, 0.302857f),
- vec3(-0.061613f, -0.865562f, -0.496997f),
- vec3(-0.061613f, 0.865562f, -0.496997f),
- vec3(-0.058087f, -0.993877f, -0.093987f),
- vec3(-0.058087f, 0.993877f, -0.093987f),
- vec3(-0.046848f, -0.543153f, 0.838326f),
- vec3(-0.046848f, 0.543153f, 0.838326f),
- vec3(-0.011249f, -0.722895f, -0.690867f),
- vec3(-0.011249f, 0.722895f, -0.690867f),
- vec3(0.000000f, 0.000000f, -1.000000f),
- vec3(0.000000f, 0.000000f, -1.000000f),
- vec3(0.000000f, 0.000000f, -1.000000f),
- vec3(0.000000f, 0.000000f, -1.000000f),
- vec3(0.000000f, 0.000000f, -1.000000f),
- vec3(0.000000f, 0.000000f, 1.000000f),
- vec3(0.000000f, 0.000000f, 1.000000f),
- vec3(0.000000f, 0.000000f, 1.000000f),
- vec3(0.000000f, 0.000000f, 1.000000f),
- vec3(0.000000f, 0.000000f, 1.000000f),
- vec3(0.011249f, -0.722895f, 0.690867f),
- vec3(0.011249f, 0.722895f, 0.690867f),
- vec3(0.046848f, -0.543153f, -0.838325f),
- vec3(0.046848f, 0.543153f, -0.838326f),
- vec3(0.058087f, -0.993877f, 0.093987f),
- vec3(0.058087f, 0.993877f, 0.093987f),
- vec3(0.061614f, -0.865562f, 0.496997f),
- vec3(0.061613f, 0.865562f, 0.496997f),
- vec3(0.062854f, -0.950961f, -0.302857f),
- vec3(0.062854f, 0.950961f, -0.302857f),
- vec3(0.067868f, -0.208875f, 0.975584f),
- vec3(0.067868f, 0.208875f, 0.975584f),
- vec3(0.110700f, -0.340701f, -0.933632f),
- vec3(0.110700f, 0.340701f, -0.933632f),
- vec3(0.132422f, -0.407551f, 0.903530f),
- vec3(0.132421f, 0.407551f, 0.903530f),
- vec3(0.156175f, -0.838207f, -0.522512f),
- vec3(0.156175f, 0.838207f, -0.522512f),
- vec3(0.171426f, -0.945345f, 0.277373f),
- vec3(0.171426f, 0.945345f, 0.277373f),
- vec3(0.177680f, -0.129092f, -0.975584f),
- vec3(0.177680f, 0.129092f, -0.975584f),
- vec3(0.187842f, -0.977088f, -0.100072f),
- vec3(0.187842f, 0.977088f, -0.100072f),
- vec3(0.190509f, -0.586326f, 0.787355f),
- vec3(0.190509f, 0.586326f, 0.787355f),
- vec3(0.217420f, -0.669150f, -0.710610f),
- vec3(0.217420f, 0.669150f, -0.710610f),
- vec3(0.219625f, 0.000000f, 0.975584f),
- vec3(0.239294f, -0.736470f, 0.632733f),
- vec3(0.239293f, 0.736470f, 0.632733f),
- vec3(0.276393f, -0.850651f, 0.447214f),
- vec3(0.276393f, 0.850651f, 0.447214f),
- vec3(0.281357f, -0.466957f, -0.838325f),
- vec3(0.281357f, 0.466957f, -0.838326f),
- vec3(0.289817f, -0.210565f, 0.933632f),
- vec3(0.289817f, 0.210565f, 0.933632f),
- vec3(0.293641f, -0.903734f, -0.311512f),
- vec3(0.293641f, 0.903734f, -0.311512f),
- vec3(0.307556f, -0.946561f, 0.097119f),
- vec3(0.307556f, 0.946561f, 0.097119f),
- vec3(0.346684f, -0.251880f, -0.903530f),
- vec3(0.346684f, 0.251881f, -0.903530f),
- vec3(0.357158f, -0.411884f, 0.838325f),
- vec3(0.357158f, 0.411884f, 0.838326f),
- vec3(0.358234f, 0.000000f, -0.933632f),
- vec3(0.366337f, -0.769921f, -0.522512f),
- vec3(0.366337f, 0.769921f, -0.522512f),
- vec3(0.415806f, -0.591446f, 0.690866f),
- vec3(0.415806f, 0.591446f, 0.690867f),
- vec3(0.416974f, -0.865562f, 0.277373f),
- vec3(0.416974f, 0.865562f, 0.277373f),
- vec3(0.422351f, -0.900891f, -0.100072f),
- vec3(0.422350f, 0.900891f, -0.100072f),
- vec3(0.428525f, 0.000000f, 0.903530f),
- vec3(0.434008f, -0.578222f, -0.690867f),
- vec3(0.434008f, 0.578222f, -0.690867f),
- vec3(0.458918f, -0.736470f, 0.496997f),
- vec3(0.458918f, 0.736470f, 0.496997f),
- vec3(0.498759f, -0.362369f, -0.787355f),
- vec3(0.498759f, 0.362369f, -0.787355f),
- vec3(0.502093f, -0.212399f, 0.838325f),
- vec3(0.502093f, 0.212399f, 0.838326f),
- vec3(0.508111f, -0.806288f, -0.302857f),
- vec3(0.508111f, 0.806288f, -0.302857f),
- vec3(0.531046f, -0.123288f, -0.838325f),
- vec3(0.531046f, 0.123288f, -0.838325f),
- vec3(0.537193f, -0.838206f, 0.093987f),
- vec3(0.537193f, 0.838207f, 0.093987f),
- vec3(0.558611f, -0.664039f, -0.496997f),
- vec3(0.558611f, 0.664039f, -0.496997f),
- vec3(0.569213f, -0.413557f, 0.710610f),
- vec3(0.569213f, 0.413557f, 0.710610f),
- vec3(0.609811f, -0.732399f, 0.302857f),
- vec3(0.609811f, 0.732399f, 0.302857f),
- vec3(0.616500f, 0.000000f, 0.787355f),
- vec3(0.619034f, -0.586326f, 0.522512f),
- vec3(0.619034f, 0.586326f, 0.522512f),
- vec3(0.626479f, -0.455163f, -0.632733f),
- vec3(0.626479f, 0.455163f, -0.632733f),
- vec3(0.631180f, -0.769921f, -0.093987f),
- vec3(0.631180f, 0.769921f, -0.093987f),
- vec3(0.684038f, -0.234085f, -0.690866f),
- vec3(0.684038f, 0.234086f, -0.690866f),
- vec3(0.690990f, -0.212688f, 0.690866f),
- vec3(0.690990f, 0.212688f, 0.690867f),
- vec3(0.694346f, -0.664039f, -0.277373f),
- vec3(0.694346f, 0.664039f, -0.277373f),
- vec3(0.703586f, 0.000000f, -0.710610f),
- vec3(0.723607f, -0.525731f, -0.447214f),
- vec3(0.723607f, 0.525731f, -0.447214f),
- vec3(0.726285f, -0.680070f, 0.100072f),
- vec3(0.726285f, 0.680070f, 0.100072f),
- vec3(0.748921f, -0.407551f, 0.522512f),
- vec3(0.748921f, 0.407551f, 0.522512f),
- vec3(0.768762f, -0.558538f, 0.311512f),
- vec3(0.768762f, 0.558538f, 0.311512f),
- vec3(0.774370f, 0.000000f, 0.632733f),
- vec3(0.804159f, -0.326071f, -0.496997f),
- vec3(0.804159f, 0.326071f, -0.496997f),
- vec3(0.805193f, -0.585006f, -0.097119f),
- vec3(0.805193f, 0.585007f, -0.097119f),
- vec3(0.842238f, -0.208875f, 0.496997f),
- vec3(0.842238f, 0.208875f, 0.496997f),
- vec3(0.845443f, -0.110489f, -0.522512f),
- vec3(0.845443f, 0.110489f, -0.522512f),
- vec3(0.846103f, -0.455163f, -0.277373f),
- vec3(0.846103f, 0.455163f, -0.277373f),
- vec3(0.871220f, -0.480585f, 0.100072f),
- vec3(0.871220f, 0.480585f, 0.100072f),
- vec3(0.884995f, -0.353641f, 0.302857f),
- vec3(0.884995f, 0.353641f, 0.302857f),
- vec3(0.894427f, 0.000000f, 0.447214f),
- vec3(0.923841f, -0.234085f, -0.302857f),
- vec3(0.923841f, 0.234086f, -0.302857f),
- vec3(0.927284f, -0.362369f, -0.093987f),
- vec3(0.927284f, 0.362369f, -0.093987f),
- vec3(0.950242f, 0.000000f, -0.311512f),
- vec3(0.952050f, -0.129092f, 0.277373f),
- vec3(0.952050f, 0.129092f, 0.277373f),
- vec3(0.963184f, -0.251880f, 0.093987f),
- vec3(0.963183f, 0.251881f, 0.093987f),
- vec3(0.987312f, -0.123288f, -0.100072f),
- vec3(0.987312f, 0.123288f, -0.100072f),
- vec3(0.995273f, 0.000000f, 0.097119f)
- };
- static u16 SphereIndices[] = {
- 147, 177, 160, 177, 203, 185, 177, 185, 160, 160, 185, 164,
- 203, 224, 211, 203, 211, 185, 185, 211, 193, 185, 193, 164,
- 164, 193, 174, 224, 246, 234, 224, 234, 211, 211, 234, 221,
- 211, 221, 193, 193, 221, 198, 193, 198, 174, 174, 198, 179,
- 246, 261, 252, 246, 252, 234, 234, 252, 243, 234, 243, 221,
- 221, 243, 226, 221, 226, 198, 198, 226, 207, 198, 207, 179,
- 179, 207, 181, 148, 160, 117, 160, 164, 125, 160, 125, 117,
- 117, 125, 94, 164, 174, 136, 164, 136, 125, 125, 136, 103,
- 125, 103, 94, 94, 103, 75, 174, 179, 150, 174, 150, 136,
- 136, 150, 110, 136, 110, 103, 103, 110, 79, 103, 79, 75,
- 75, 79, 54, 179, 181, 156, 179, 156, 150, 150, 156, 121,
- 150, 121, 110, 110, 121, 88, 110, 88, 79, 79, 88, 63,
- 79, 63, 54, 54, 63, 41, 144, 116, 115, 116, 93, 89,
- 116, 89, 115, 115, 89, 92, 94, 75, 68, 93, 67, 89,
- 89, 67, 66, 89, 66, 92, 92, 66, 74, 75, 54, 50,
- 75, 50, 68, 67, 49, 42, 67, 42, 66, 66, 42, 48,
- 66, 48, 74, 74, 48, 53, 54, 41, 32, 54, 32, 50,
- 50, 32, 25, 49, 24, 42, 42, 24, 23, 42, 23, 48,
- 48, 23, 31, 48, 31, 53, 53, 31, 40, 145, 115, 159,
- 115, 92, 124, 115, 124, 159, 159, 124, 163, 92, 74, 102,
- 92, 102, 124, 124, 102, 135, 124, 135, 163, 163, 135, 173,
- 74, 53, 78, 74, 78, 102, 102, 78, 109, 102, 109, 135,
- 135, 109, 149, 135, 149, 173, 173, 149, 178, 53, 40, 62,
- 53, 62, 78, 78, 62, 87, 78, 87, 109, 109, 87, 120,
- 109, 120, 149, 149, 120, 155, 149, 155, 178, 178, 155, 180,
- 146, 159, 177, 159, 163, 184, 159, 184, 177, 177, 184, 203,
- 163, 173, 192, 163, 192, 184, 184, 192, 210, 184, 210, 203,
- 203, 210, 224, 173, 178, 197, 173, 197, 192, 192, 197, 220,
- 192, 220, 210, 210, 220, 233, 210, 233, 224, 224, 233, 246,
- 178, 180, 206, 178, 206, 197, 197, 206, 225, 197, 225, 220,
- 220, 225, 242, 220, 242, 233, 233, 242, 251, 233, 251, 246,
- 246, 251, 261, 261, 267, 268, 267, 269, 273, 267, 273, 268,
- 268, 273, 270, 269, 264, 271, 269, 271, 273, 273, 271, 272,
- 273, 272, 270, 270, 272, 265, 264, 255, 262, 264, 262, 271,
- 271, 262, 266, 271, 266, 272, 272, 266, 263, 272, 263, 265,
- 265, 263, 256, 255, 238, 247, 255, 247, 262, 262, 247, 253,
- 262, 253, 266, 266, 253, 254, 266, 254, 263, 263, 254, 248,
- 263, 248, 256, 256, 248, 239, 181, 200, 168, 200, 217, 189,
- 200, 189, 168, 168, 189, 154, 217, 230, 202, 217, 202, 189,
- 189, 202, 172, 189, 172, 154, 154, 172, 134, 230, 236, 213,
- 230, 213, 202, 202, 213, 187, 202, 187, 172, 172, 187, 158,
- 172, 158, 134, 134, 158, 119, 236, 239, 219, 236, 219, 213,
- 213, 219, 196, 213, 196, 187, 187, 196, 166, 187, 166, 158,
- 158, 166, 132, 158, 132, 119, 119, 132, 105, 41, 44, 22,
- 44, 52, 30, 44, 30, 22, 22, 30, 12, 52, 65, 39,
- 52, 39, 30, 30, 39, 20, 30, 20, 12, 12, 20, 6,
- 65, 84, 59, 65, 59, 39, 39, 59, 35, 39, 35, 20,
- 20, 35, 18, 20, 18, 6, 6, 18, 9, 84, 105, 77,
- 84, 77, 59, 59, 77, 56, 59, 56, 35, 35, 56, 37,
- 35, 37, 18, 18, 37, 28, 18, 28, 9, 8, 27, 16,
- 40, 21, 43, 21, 11, 29, 21, 29, 43, 43, 29, 51,
- 11, 4, 19, 11, 19, 29, 29, 19, 38, 29, 38, 51,
- 51, 38, 64, 4, 7, 17, 4, 17, 19, 19, 17, 34,
- 19, 34, 38, 38, 34, 58, 38, 58, 64, 64, 58, 83,
- 7, 16, 26, 7, 26, 17, 17, 26, 36, 17, 36, 34,
- 34, 36, 55, 34, 55, 58, 58, 55, 76, 58, 76, 83,
- 83, 76, 104, 180, 167, 199, 167, 153, 188, 167, 188, 199,
- 199, 188, 216, 153, 133, 171, 153, 171, 188, 188, 171, 201,
- 188, 201, 216, 216, 201, 229, 133, 118, 157, 133, 157, 171,
- 171, 157, 186, 171, 186, 201, 201, 186, 212, 201, 212, 229,
- 229, 212, 235, 118, 104, 131, 118, 131, 157, 157, 131, 165,
- 157, 165, 186, 186, 165, 195, 186, 195, 212, 212, 195, 218,
- 212, 218, 235, 235, 218, 238, 239, 236, 256, 236, 230, 250,
- 236, 250, 256, 256, 250, 265, 230, 217, 241, 230, 241, 250,
- 250, 241, 258, 250, 258, 265, 265, 258, 270, 217, 200, 223,
- 217, 223, 241, 241, 223, 245, 241, 245, 258, 258, 245, 260,
- 258, 260, 270, 270, 260, 268, 200, 181, 207, 200, 207, 223,
- 223, 207, 226, 223, 226, 245, 245, 226, 243, 245, 243, 260,
- 260, 243, 252, 260, 252, 268, 268, 252, 261, 105, 84, 119,
- 84, 65, 96, 84, 96, 119, 119, 96, 134, 65, 52, 82,
- 65, 82, 96, 96, 82, 114, 96, 114, 134, 134, 114, 154,
- 52, 44, 70, 52, 70, 82, 82, 70, 98, 82, 98, 114,
- 114, 98, 130, 114, 130, 154, 154, 130, 168, 44, 41, 63,
- 44, 63, 70, 70, 63, 88, 70, 88, 98, 98, 88, 121,
- 98, 121, 130, 130, 121, 156, 130, 156, 168, 168, 156, 181,
- 16, 7, 8, 7, 4, 0, 7, 0, 8, 8, 0, 5,
- 4, 11, 1, 4, 1, 0, 0, 1, 2, 0, 2, 5,
- 6, 3, 12, 11, 21, 13, 11, 13, 1, 1, 13, 10,
- 1, 10, 2, 2, 10, 14, 3, 15, 12, 12, 15, 22,
- 21, 40, 31, 21, 31, 13, 13, 31, 23, 13, 23, 10,
- 10, 23, 24, 10, 24, 14, 15, 25, 32, 15, 32, 22,
- 22, 32, 41, 104, 118, 83, 118, 133, 95, 118, 95, 83,
- 83, 95, 64, 133, 153, 113, 133, 113, 95, 95, 113, 81,
- 95, 81, 64, 64, 81, 51, 153, 167, 129, 153, 129, 113,
- 113, 129, 97, 113, 97, 81, 81, 97, 69, 81, 69, 51,
- 51, 69, 43, 167, 180, 155, 167, 155, 129, 129, 155, 120,
- 129, 120, 97, 97, 120, 87, 97, 87, 69, 69, 87, 62,
- 69, 62, 43, 43, 62, 40, 238, 255, 235, 255, 264, 249,
- 255, 249, 235, 235, 249, 229, 264, 269, 257, 264, 257, 249,
- 249, 257, 240, 249, 240, 229, 229, 240, 216, 269, 267, 259,
- 269, 259, 257, 257, 259, 244, 257, 244, 240, 240, 244, 222,
- 240, 222, 216, 216, 222, 199, 267, 261, 251, 267, 251, 259,
- 259, 251, 242, 259, 242, 244, 244, 242, 225, 244, 225, 222,
- 222, 225, 206, 222, 206, 199, 199, 206, 180, 143, 128, 170,
- 128, 123, 162, 128, 162, 170, 170, 162, 191, 123, 112, 152,
- 123, 152, 162, 162, 152, 183, 162, 183, 191, 191, 183, 209,
- 112, 107, 138, 112, 138, 152, 152, 138, 176, 152, 176, 183,
- 183, 176, 205, 183, 205, 209, 209, 205, 228, 107, 105, 132,
- 107, 132, 138, 138, 132, 166, 138, 166, 176, 176, 166, 196,
- 176, 196, 205, 205, 196, 219, 205, 219, 228, 228, 219, 239,
- 139, 108, 127, 108, 80, 100, 108, 100, 127, 128, 101, 123,
- 80, 57, 72, 80, 72, 100, 101, 73, 91, 101, 91, 123,
- 123, 91, 112, 57, 33, 46, 57, 46, 72, 73, 47, 61,
- 73, 61, 91, 91, 61, 86, 91, 86, 112, 112, 86, 107,
- 33, 16, 27, 33, 27, 46, 47, 28, 37, 47, 37, 61,
- 61, 37, 56, 61, 56, 86, 86, 56, 77, 86, 77, 107,
- 107, 77, 105, 140, 126, 108, 126, 122, 99, 126, 99, 108,
- 108, 99, 80, 122, 111, 90, 122, 90, 99, 99, 90, 71,
- 99, 71, 80, 80, 71, 57, 111, 106, 85, 111, 85, 90,
- 90, 85, 60, 90, 60, 71, 71, 60, 45, 71, 45, 57,
- 57, 45, 33, 106, 104, 76, 106, 76, 85, 85, 76, 55,
- 85, 55, 60, 60, 55, 36, 60, 36, 45, 45, 36, 26,
- 45, 26, 33, 33, 26, 16, 141, 169, 126, 169, 190, 161,
- 169, 161, 126, 126, 161, 122, 190, 208, 182, 190, 182, 161,
- 161, 182, 151, 161, 151, 122, 122, 151, 111, 208, 227, 204,
- 208, 204, 182, 182, 204, 175, 182, 175, 151, 151, 175, 137,
- 151, 137, 111, 111, 137, 106, 227, 238, 218, 227, 218, 204,
- 204, 218, 195, 204, 195, 175, 175, 195, 165, 175, 165, 137,
- 137, 165, 131, 137, 131, 106, 106, 131, 104, 142, 170, 169,
- 170, 191, 194, 170, 194, 169, 169, 194, 190, 191, 209, 215,
- 191, 215, 194, 194, 215, 214, 194, 214, 190, 190, 214, 208,
- 209, 228, 232, 209, 232, 215, 215, 232, 237, 215, 237, 214,
- 214, 237, 231, 214, 231, 208, 208, 231, 227, 228, 239, 248,
- 228, 248, 232, 232, 248, 254, 232, 254, 237, 237, 254, 253,
- 237, 253, 231, 231, 253, 247, 231, 247, 227, 227, 247, 238,
- };
-
- //------------------------------------//
- // Box Primitive
-
- static vec3 BoxVerts[] = {
- vec3(-1, -1, -1),
- vec3(-1, -1, 1),
- vec3(-1, 1, -1),
- vec3( 1, -1, -1),
- vec3(-1, 1, 1),
- vec3( 1, 1, -1),
- vec3( 1, -1, 1),
- vec3( 1, 1, 1)
- };
- static u16 BoxIndices[] = {
- 3, 6, 7, 3, 7, 5,
- 0, 2, 4, 0, 4, 1,
- 1, 4, 7, 1, 7, 6,
- 0, 3, 5, 0, 5, 2,
- 2, 5, 7, 2, 7, 4,
- 0, 1, 6, 0, 6, 3
- };
-
- //------------------------------------//
- // BatchDrawer: Constructor
-
- BatchDrawer::BatchDrawer() {
- Type = D3DPT_FORCE_DWORD;
- StartVertex = 0;
- PrimitiveCount = 0;
- }
-
- BatchDrawer::BatchDrawer(D3DPRIMITIVETYPE type, u32 startVertex, u32 primitiveCount) {
- Type = type;
- StartVertex = startVertex;
- PrimitiveCount = primitiveCount;
- }
-
- //------------------------------------//
- // BatchDrawer: Methods
-
- void BatchDrawer::draw() {
- Engine::Draw->draw(Type, StartVertex, PrimitiveCount);
- }
-
- //------------------------------------//
- // BatchIndexedDrawer: Constructor
-
- BatchIndexedDrawer::BatchIndexedDrawer() {
- Type = D3DPT_FORCE_DWORD;
- BaseIndex = 0;
- MinIndex = 0;
- NumVertices = 0;
- StartIndex = 0;
- PrimitiveCount = 0;
- }
-
- BatchIndexedDrawer::BatchIndexedDrawer(D3DPRIMITIVETYPE type, u32 minIndex, u32 numVertices, u32 startIndex, u32 primitiveCount, s32 baseIndex) {
- Type = type;
- BaseIndex = baseIndex;
- MinIndex = minIndex;
- NumVertices = numVertices;
- StartIndex = startIndex;
- PrimitiveCount = primitiveCount;
- }
-
- //------------------------------------//
- // BatchIndexedDrawer: Methods
-
- void BatchIndexedDrawer::draw() {
- Engine::Draw->draw(Type, MinIndex, NumVertices, StartIndex, PrimitiveCount, BaseIndex);
- }
-
- //------------------------------------//
- // Draw: Constructor
-
- Draw::Draw() {
- _usedVertexBytes = 0;
-
- // Utwórz opis wierzchołka
- _formatXyz.reset(new VertexType(D3DFVF_XYZ));
-
- // Utwórz dynamiczne bufory wierzchołków i indeksów
- _dynamicVertexBuffer.reset(new VertexBuffer(65536, 1, true));
- _dynamicIndexBuffer.reset(new IndexBuffer(32768, if16, true));
-
- // Utwórz miejsce na podstawowe bryły
- _vertexBuffer.reset(new VertexBuffer(CountOf(SphereVerts) + CountOf(BoxVerts), sizeof(vec3)));
- _indexBuffer.reset(new IndexBuffer(CountOf(SphereIndices) + CountOf(BoxIndices), if16));
-
- // Zapisz sferę
- _vertexBuffer->update(SphereVerts, CountOf(SphereVerts), 0);
- _indexBuffer->update(SphereIndices, CountOf(SphereIndices), 0);
- _sphereBatch = BatchIndexedDrawer(D3DPT_TRIANGLELIST, 0, CountOf(SphereVerts), 0, CountOf(SphereIndices) / 3, 0);
-
- // Zapisz boxa
- _vertexBuffer->update(BoxVerts, CountOf(BoxVerts), CountOf(SphereVerts));
- _indexBuffer->update(BoxIndices, CountOf(BoxIndices), CountOf(SphereIndices));
- _boxBatch = BatchIndexedDrawer(D3DPT_TRIANGLELIST, 0, CountOf(BoxVerts), CountOf(SphereIndices), CountOf(BoxIndices) / 3, CountOf(SphereVerts));
- }
-
- //------------------------------------//
- // Draw: Destructor
-
- Draw::~Draw() {
- _usedIndexBytes = 0;
-
- // Usuń opis wierzchołka
- _formatXyz.reset();
-
- // Zwolnij dynamiczne bufory
- _dynamicVertexBuffer.reset();
- _dynamicIndexBuffer.reset();
-
- // Zniszcz statyczne bufory
- _vertexBuffer.reset();
- _indexBuffer.reset();
- }
-
- //------------------------------------//
- // Draw: Methods
-
- void Draw::draw(D3DPRIMITIVETYPE type, u32 startVertex, u32 primitiveCount) {
- // Uaktualnij stan urządzenia
- Engine::Device->updateStates();
-
- // Wyświetl listę prymitywów
- dxe(Engine::Device->d3ddev()->DrawPrimitive(type, startVertex, primitiveCount));
-
- // Uaktualnij statystyki
- Engine::Stats->Draws++;
- Engine::Stats->Primitives += primitiveCount;
- }
-
- void Draw::draw(D3DPRIMITIVETYPE type, u32 minIndex, u32 numVertices, u32 startIndex, u32 primitiveCount, s32 baseIndex) {
- // Uaktualnij stan urządzenia
- Engine::Device->updateStates();
-
- // Wyświetl indeksowaną listę prymitywów
- dxe(Engine::Device->d3ddev()->DrawIndexedPrimitive(type, baseIndex, minIndex, numVertices, startIndex, primitiveCount));
-
- // Uaktualnij statystyki
- Engine::Stats->Draws++;
- Engine::Stats->Primitives += primitiveCount;
- }
-
- void Draw::drawScreenQuad(Material *material, RenderState *state) {
- vec3 v[4] = {
- vec3(0, 0, 1),
- vec3(0, 1, 0),
- vec3(1, 1, 0),
- vec3(1, 0, 1)
- };
-
- // Włącz materiał
- if(material && state)
- material->bind(*state);
-
- // Ustaw opis wierzchołka
- _formatXyz->bind();
-
- // Uaktualnij stan urządzenia
- Engine::Device->updateStates();
-
- // Wyświetl
- dxe(Engine::Device->d3ddev()->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, v, sizeof(vec3)));
-
- // Wyłącz materiał
- if(material && state)
- material->unbind(*state);
- }
-
- void Draw::drawSphere(const vec3 &origin, f32 radius, Material *material, RenderState *state) {
- mat4 temp, temp2, transform;
-
- // Włącz materiał
- if(material && state)
- material->bind(*state);
-
- // Oblicz macierz transformacji
- mat4::translation(temp, origin);
- mat4::scaling(temp2, radius);
- mat4::multiply(transform, temp, temp2);
-
- // Ustaw macierz trasformacji
- Engine::Device->object(transform);
-
- // Ustaw opis wierzchołka
- _formatXyz->bind();
-
- // Włącz bufory
- _vertexBuffer->bind(0, 0);
- _indexBuffer->bind();
-
- // Wyświetl
- _sphereBatch.draw();
-
- // Wyłącz bufory
- _vertexBuffer->unbind(0);
- _indexBuffer->unbind();
-
- // Wyłącz materiał
- if(material && state)
- material->unbind(*state);
- }
-
- //------------------------------------//
- // Draw: Dynamic Methods
-
- void Draw::bindVertices(u32 stream, const void *vertices, u32 stride, u32 count) {
- u32 size = stride * count;
-
- // Sprawdź czy dane się zmieszczą do bufora
- Assert((stride * count) <= _dynamicVertexBuffer->count());
-
- // Sprawdź czy się zmieszczą bez discard ;)
- if(_usedVertexBytes + size <= _dynamicVertexBuffer->count()) {
- // Taak... to uaktualnij bez discard :D
- _dynamicVertexBuffer->update(vertices, size, _usedVertexBytes, true);
-
- // Dodaj nowe wierzchołki
- _usedVertexBytes += size;
- }
- else {
- // Buu... nowy bufor potrzebujemy
- _dynamicVertexBuffer->update(vertices, size, 0, false);
-
- // Zaznacz ile mamy wierzchołków
- _usedVertexBytes = size;
- }
-
- // Podepnij bufor
- _dynamicVertexBuffer->bind(stream, _usedVertexBytes - size, stride);
- }
-
- void Draw::bindIndices(const u16 *indices, u32 count) {
- // Sprawdź czy dane się zmieszczą do bufora
- Assert(count <= _dynamicIndexBuffer->count());
-
- // Sprawdź czy się zmieszczą bez discard ;)
- if(_usedIndexBytes + count <= _dynamicIndexBuffer->count()) {
- // Taak... to uaktualnij bez discard :D
- _dynamicIndexBuffer->update(indices, count, _usedIndexBytes, true);
-
- // Dodaj nowe wierzchołki
- _usedIndexBytes += count;
- }
- else {
- // Buu... nowy bufor potrzebujemy
- _dynamicIndexBuffer->update(indices, count, 0, false);
-
- // Zaznacz ile mamy wierzchołków
- _usedIndexBytes = count;
- }
-
- // Podepnij bufor
- _dynamicIndexBuffer->bind();
- }
-
- void Draw::unbindIndices() {
- // Odepnij bufor indeksów
- _dynamicIndexBuffer->unbind();
- }
-
- void Draw::unbindVertices(u32 stream) {
- // Odepnij bufor wierzchołków
- _dynamicVertexBuffer->unbind(stream);
- }
- };