提示コードの下部のstatic 変数部ですがこれはアセットを読み込むstatic クラスで一度読み込んだアセットのポインタを取得するクラスです再ロードを防ぐ仕組みです。 その際にstatic変数をスマートポインタ型にしていますがどれをどのようにポインタ型にすればいいのでしょうか?
実行時間を意識したいのですが
cpp
1#ifndef Resource_File_HPP_ 2#define Resource_File_HPP_ 3 4#include <iostream> 5#include <fstream> 6#include <vector> 7 8#include "glew/include/GL/glew.h" 9 10#include "Help.hpp" 11 12/*######################################################################### 13# Resource取得 14 15説明 16 アセットを取得する 17###########################################################################*/ 18 19namespace FrameWork 20{ 21 class Resource 22 { 23 24 public: 25 26 // ##################### アセット ##################### 27 typedef enum 28 { 29 player, 30 enemy, 31 item, 32 33 shader_BasicMono_vert, 34 shader_BasicMono_frag, 35 36 37 38 }Asset; 39 40 // ##################### テクスチャ ##################### 41 42 //テクスチャ 43 typedef struct 44 { 45 glm::ivec2 size; // 画像サイズ 46 std::shared_ptr<byte> fileData; // 画像データ 47 int channel; // 画像のチャンネル数 48 }Texture; 49 50 // ##################### シェーダー ##################### 51 52 //シェーダー 53 typedef struct 54 { 55 std::shared_ptr<std::vector<GLchar>> fileData; // ラグメント 56 }Shader; 57 58 // ##################### ファイル名 ##################### 59 60 //ファイル名 61 typedef struct 62 { 63 const char* fileName; // ファイル名 64 Asset assetName; // アセット名 65 }Resource_File; 66 67 68 69 static void LoadTexture(Asset assetName); // テクスチャーを読み込み 70 static std::shared_ptr<Texture> getTexture(Asset assetName); // 読み込んだテクスチャーを取得 71 72 static void LoadShader(Asset assetName); // シェーダーを読み込む 73 static std::shared_ptr<std::vector<GLchar>> getShader(Asset assetName); // 読み込んだシェーダーを取得 74 static void InputFile_Ok(std::vector<Resource_File>& data); // ファイルが全部読み込めるかどうか確認する 75 76 private: 77 78 // ##################### テクスチャ ##################### 79 80 //テクスチャデータ 81 typedef struct 82 { 83 std::shared_ptr<Texture> texture; // テクスチャー 84 Asset assetName; // アセット 85 }Texture_Data; 86 87 // ##################### シェーダー ##################### 88 89 //シェーダーデータ 90 typedef struct 91 { 92 std::shared_ptr<Shader> shader; // テクスチャー 93 Asset assetName; // アセット 94 }Shader_Data; 95 96 static std::shared_ptr<std::vector<std::shared_ptr<Texture_Data>>> texture; //テクスチャ 97 static std::shared_ptr<std::vector<std::shared_ptr<Shader_Data>>> shader; //シェーダー 98 99 //std::shared_ptr<std::vector<std::shared_ptr<FrameWork::ShaderData>>> textureReousrce = std::make_shared<std::vector<std::shared_ptr<FrameWork::TexturData>>>(0); 100 //std::shared_ptr<std::vector<std::shared_ptr<FrameWork::SoundData>>> textureReousrce = std::make_shared<std::vector<std::shared_ptr<FrameWork::TexturData>>>(0); 101 static std::shared_ptr<std::vector<Resource_File>> resourceFile; 102 103 static byte FileCheck(const char* fileName);// ファイルが読めるかどうか? 104 static byte LoadShadeFile(const char* vert,const char* frag); // シェーダーファイルを読み込む 105 }; 106 107} 108#endif
・速度
・「shared_ptrにするかしないか」みたいな話
の両者の間にどのような関連性を考えての質問なのですか?
「shared_ptr を使うか否かで有意に速度差が見られる」とかいった状況にあるのでしょうか?
ポインタを使うと早くなるのでその話が聞きたいです。
> ポインタを使うと早くなる
その話を再現できる最低限のコードを示す等してください.
「ポインタを使う」パターンと「そうでない」パターンの2つのコードとそれらの実行時間とを示さなければ
何の話をしているのかが伝わらないでしょう.
高速化なんてのは、きちんと動くものを完成させてから考えればいい話で、基礎的なデバッグすらせず質問しまくってるあなたにはまだ早いです。
> ポインタを使うと早くなる
誰がそんなタワゴトを...
「ポインタを使うと早くなる」じゃなくて
「ポインタを使って早くする」です。
どこが足かせとなって遅いのかを調査/検証し、ソコがポインタ使うことで早くなるか考察します。
回答1件
あなたの回答
tips
プレビュー