質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

受付中

全ての描画で頂点を共有するコードを作る方法が知りたい。

削除済ユーザー
削除済ユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0回答

-6評価

0クリップ

478閲覧

投稿2021/07/06 08:53

編集2022/01/12 10:55

提示コードですがSprite クラスはRenderクラスを継承しています。
質問 [ 全てのスプライトや矩形描画、円描画、等で頂点情報を使いまわしてメモリを節約する方法が知りたい。 ]
です。どういったやり方を用いれば頂点数をすべての描画物で節約出来るのでしょうか?

cpp

#ifndef ___SPRITE_2D_HPP_ #define ___SPRITE_2D_HPP_ #include <iostream> #include <fstream> #include <glew/include/GL/glew.h> #include <glm/glm.hpp> #include "glm/glm.hpp" #include "glm/gtc/matrix_Transform.hpp" #include "glm/gtx/Transform.hpp" #include "Render.hpp" #include "VertexData.hpp" #include "Resource.hpp" /*######################################################################### # スプライトクラス 説明 2Dのテクスチャ描画 正射形 ###########################################################################*/ /*######################################################################### *NOTE * * 頂点の順番 * 0 2,3 * 1,4 5 ###########################################################################*/ namespace FrameWork { class Window; //頂点配列を指定 class Sprite : public FrameWork::Render_2D { public: Sprite(FrameWork::Vertex::Attribute type = FrameWork::Vertex::Attribute::UV, const char* vert = NULL, const char* frag = NULL); // コンストラクタ ~Sprite(); // デストラクタ void InputTexture(std::shared_ptr<FrameWork::Resource::Texture> tex); // テクスチャ 設定 void setNormal(glm::vec3 normal[6]); // 法線 設定 void setAttribute(std::vector<Vertex::ALL_2D>& vertex); // 頂点属性 編集 void setUnBind(); // バインド 無効 void setBind(); // バインド 有効 void setDraw(glm::vec2 pos, int texNum, float r, glm::vec2 s, glm::vec2 start, glm::vec2 end); // 描画 設定 private: //テクスチャ typedef struct { glm::vec2 size; //画像サイズ int unitNumber; //ユニットナンバー GLuint ID; //ID std::shared_ptr<byte> file; //テクスチャ }Texture; //テクスチャ範囲 glm::vec2 startSize; //始点 glm::vec2 endSize; //終点 std::vector<Texture> texture; //テクスチャデータ int textureNumber = 0; //描画テクスチャナンバー glm::vec3 attributeNormal[6]; //法線 }; } #endif

cpp

#ifndef ___RENDER_HPP_ #define ___RENDER_HPP_ #include <iostream> #include "glm/glm.hpp" #include "glm/gtc/matrix_Transform.hpp" #include "glm/gtx/Transform.hpp" #include "glew/include/GL/glew.h" //#include "Help.hpp" #include "Shader.hpp" #include "VertexData.hpp" #include "Transform_2D.hpp" namespace FrameWork { class Render_2D : public Transform_2D { public: //頂点属性、レンダリングタイプ、頂点数 Render_2D(Vertex::Attribute vt, GLenum rt); //コンストラクタ ~Render_2D(); //デストラクタ Vertex::Attribute getAttribType(); //頂点属性 GLenum getRenderType(); //レンダリングタイプ virtual void setAttribute(std::vector<Vertex::ALL_2D>& vertex) = 0; //頂点配列 編集 virtual void setUnBind(); //バインド 解除 virtual void setBind(); //バインド 有効 std::shared_ptr<FrameWork::Shader> shader; //シェーダー protected: GLenum renderType; //レンダリングタイプ Vertex::Attribute attributeType; //頂点属性のタイプ }; }; #endif

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。