MCPcopy Create free account
hub / github.com/NazaraEngine/NazaraEngine / main

Function main

examples/HardwareInfo/main.cpp:20–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18void printCap(std::ostream& o, const Nz::String& cap, bool b);
19
20int 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;

Callers

nothing calls this directly

Calls 5

printCapFunction · 0.85
IsSupportedFunction · 0.50
OpenMethod · 0.45
WriteMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected