[解決済み] SFML の描画プリミティブを VertexArray から取得する。
2022-02-16 09:26:01
質問
構築したVertexArrayから好きなプリミティブを描画するにはどうしたらいいですか?下の例では、「vertices」配列に2つの頂点を追加し、「window.draw(vertices, 2, sf::Lines) 」で描画しようとしていますが、エラーになります。sf::Vertex foo[] = {..}' でラインオブジェクトを作ることができるのは知っていますが、一度にすべてを初期化するのではなく、配列に頂点を追加し続けられるようにしたいのですが、どうすればいいですか?
#include <SFML/Window.hpp>
#include <SFML/OpenGL.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
int main()
{
// Create the main window
sf::RenderWindow window(sf::VideoMode(640, 480), "SFML");
sf::Clock clock;
sf::VertexArray vertices;
sf::Vertex vertex;
vertex.position = sf::Vector2f(0, 0);
vertex.color = sf::Color(100, 0, 200);
vertices.append(vertex);
vertex.position = sf::Vector2f(100, 100);
vertex.color = sf::Color(100, 0, 200);
vertices.append(vertex);
// Start the game loop
bool running = true;
while (running)
{
// Process events
sf::Event event;
while (window.pollEvent(event))
{
// Close window: exit
if (event.type == sf::Event::Closed)
running = false;
}
window.clear(sf::Color::Black);
window.draw(vertices,2 ,sf::Lines);
window.display();
}
return 0;
}
解決方法は?
を呼び出すことができます。
vertices.setPrimitiveType(sf::Lines);
を宣言した後
sf::VertexArray vertices;
を表示した後、描画します。
window.draw(vertices);
あるいは、コンストラクタでプリミティブ型と点数を設定し、それらの点へのアクセスを
operator[]
:
sf::VertexArray line(sf::Lines, 2); //or sf::LineStrip
line[0].position = sf::Vector2f(0, 0);
line[0].color = sf::Color(100, 0, 200);
line[1].position = sf::Vector2f(100, 100);
line[1].color = sf::Color(100, 0, 200);
...
window.draw(line);
参考 enum sf::PrimitiveType , sf::VertexArray , VertexArrayチュートリアル
関連
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] C++で、あるコンストラクタを別のコンストラクタから呼び出す(コンストラクタ・チェイニングを行う)ことは可能ですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別子 "string "は未定義?
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】'std::cout'への未定義の参照