| 18 | void printCap(std::ostream& o, const Nz::String& cap, bool b); |
| 19 | |
| 20 | int main() |
| 21 | { |
| 22 | std::cout << "Initialisation en cours..."; |
| 23 | |
| 24 | // On va afficher le tout via un ostringstream, pour écrire dans la console et aussi dans un fichier |
| 25 | std::ostringstream oss; |
| 26 | |
| 27 | oss << "--Processeur--" << std::endl; |
| 28 | // Plutôt que d'initialiser le Renderer de Nazara, nous initialisons les deux classes utilisées ici |
| 29 | // Elles sont compatibles avec NzInitialiser et seront donc libérées automatiquement |
| 30 | // Cela permet d'avoir une initialisation plus rapide et un coût en mémoire moindre |
| 31 | Nz::Initializer<Nz::HardwareInfo> hardwareInfo; |
| 32 | if (hardwareInfo) |
| 33 | { |
| 34 | // On commence par les informations sur le processeur, Nazara en récupère trois caractéristiques: |
| 35 | // 1) La "brand string", qui est une chaîne de 48 caractères identifiant le processeur |
| 36 | // 2) Le concepteur du processeur, accessible via une énumération (GetProcessorVendor) ou une chaîne de caractère (GetProcessorVendorName) |
| 37 | // 3) Le nombre de processeurs logique, alias bien souvent le nombre de coeurs (logiques), cette valeur est renvoyée par l'OS (Le SMT multiplie donc la valeur réelle) |
| 38 | oss << "Identification: " << Nz::HardwareInfo::GetProcessorBrandString() << std::endl; |
| 39 | oss << "Concepteur: " << Nz::HardwareInfo::GetProcessorVendorName() << std::endl; |
| 40 | oss << "Nombre de coeurs logiques: " << Nz::HardwareInfo::GetProcessorCount() << std::endl; |
| 41 | oss << std::endl; |
| 42 | |
| 43 | // Ensuite, Nazara récupère les capacités du processeur, dont des jeux d'extensions supplémentaires |
| 44 | oss << "Rapport des capacites: " << std::endl;// Pas d'accent car écriture dans un fichier (et on ne va pas s'embêter avec ça) |
| 45 | printCap(oss, "-64bits", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_x64)); |
| 46 | printCap(oss, "-AVX", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_AVX)); |
| 47 | printCap(oss, "-FMA3", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_FMA3)); |
| 48 | printCap(oss, "-FMA4", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_FMA4)); |
| 49 | printCap(oss, "-MMX", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_MMX)); |
| 50 | printCap(oss, "-SSE", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_SSE)); |
| 51 | printCap(oss, "-SSE2", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_SSE2)); |
| 52 | printCap(oss, "-SSE3", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_SSE3)); |
| 53 | printCap(oss, "-SSSE3", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_SSSE3)); |
| 54 | printCap(oss, "-SSE4.1", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_SSE41)); |
| 55 | printCap(oss, "-SSE4.2", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_SSE42)); |
| 56 | printCap(oss, "-SSE4.a", Nz::HardwareInfo::HasCapability(Nz::ProcessorCap_SSE4a)); |
| 57 | } |
| 58 | else |
| 59 | oss << "Impossible de retrouver les informations du processeur" << std::endl; |
| 60 | |
| 61 | oss << std::endl << "--Carte graphique--" << std::endl; |
| 62 | // La classe OpenGL nous donne accès à des informations sur la carte graphique |
| 63 | // Cependant celle-ci n'est accessible que si le projet est compilé avec NAZARA_RENDERER_OPENGL |
| 64 | // et que les répertoires d'inclusions donnent accès aux includes d'OpenGL (Cette démo utilisent ceux de Nazara) |
| 65 | Nz::Initializer<Nz::OpenGL> openGL; |
| 66 | if (openGL) |
| 67 | { |
| 68 | // Nous récupérons ensuite la version d'OpenGL sous forme d'entier (ex: OpenGL 3.3 donnera 330) |
| 69 | unsigned int openglVersion = Nz::OpenGL::GetVersion(); |
| 70 | |
| 71 | // OpenGL nous donne accès à trois informations principales: |
| 72 | // 1) La chaîne d'identification du driver ("Renderer name") |
| 73 | // 2) La chaîne d'identification du concepteur ("Vendor name") |
| 74 | // 3) La version d'OpenGL |
| 75 | oss << "Identification: " << Nz::OpenGL::GetRendererName() << std::endl; |
| 76 | oss << "Concepteur: " << Nz::OpenGL::GetVendorName() << std::endl; |
| 77 | oss << "Version d'OpenGL: " << openglVersion/100 << '.' << openglVersion%100 << std::endl; |
nothing calls this directly
no test coverage detected