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

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

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

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

C++

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

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

Q&A

解決済

2回答

2529閲覧

Imgui フォントロードで例外エラー出る原因が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

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

C++

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

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

0グッド

0クリップ

投稿2021/12/12 09:10

編集2021/12/12 11:33

提示子画像ですがデフォルトフォントが読み込まれないせいかg_Fontコードでnullというエラーが出ます。これはなぜでしょうか?

#####現状
提示画像はimgui.hです。
imguiをダウンロードしてlibファイルを作成
ウインドウコンテキストを作成してからImGuiを初期化
ソースコードのある場所にフォントファイルのディレクトリを移動

イメージ説明

// ##################################### コンストラクタ ##################################### FrameWork::Window::Window(glm::ivec2 size, const char* title) { windowSize = size; window = std::make_shared<GLFWwindow*>(glfwCreateWindow(size.x, size.y, title, NULL, NULL)); // window = glfwCreateWindow(size.x, size.y, title, NULL, NULL); glfwMakeContextCurrent(*window); //コンテキストを作成 //ImGui_ImplOpenGL2_Init(); glfwSwapInterval(1); //垂直同期 if (glewInit() != GLEW_OK) { std::cerr << "GLFW 初期化失敗" << std::endl; exit(1); } ImGui::CreateContext(); IMGUI_CHECKVERSION(); ImGui_ImplGlfw_InitForOpenGL(*window, true); //変数を初期化 std::fill(std::begin(keyBoard), std::end(keyBoard), 0); //キーボード入力配列を初期化 std::fill(std::begin(key), std::end(key), 0); //キーボード入力配列を初期化 std::fill(std::begin(mouseButton), std::end(mouseButton), 0); //マウス入力配列を初期化 mouseWheel = 0; //マウスホイール mousePrevWheel = 0.0f; inputKey = 0; //文字入力 //フレーム管理 count = 0; //現在のフレーム startCount = 0; //最初の時間 //コンテキストの作成に失敗 if (*window == NULL) { std::cerr << "ウインドウ生成失敗" << std::endl; exit(1); //異常終了 } else { //std::cout << "ウインドウコンテキスト初期化" << std::endl; } //イベント処理 glfwSetWindowUserPointer(*window, this); //このインスタンスのthis glfwSetWindowSizeCallback(*window, Resize); //ウインドウサイズを変更する時に呼び出す処理 glfwSetDropCallback(*window,DragAndDrop); //ドラック&ドロップ glfwSetScrollCallback(*window,MouseScroll); //マウスのホイール glfwSetCharCallback(*window,KeyInputChar); //テキスト入力 glfwSetKeyCallback(*window,KeyInput); //キー入力 glfwSetInputMode(*window, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE); Resize(*window, size.x, size.y); //リサイズ atexit(glfwTerminate); //プログラム終了時の処理を登録 }
Renderer
void Game::Renderer() const { camera->setView(ui); camera->setView(canvas); camera->setView(control); ImGui::Begin("config 1"); ImGui::End(); camera->Renderer(); }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こちらと同様の事象でしょうか。

■ Program Crashes Due To Incorrect Initialisation?
(初期化が正しくないためにプログラムがクラッシュしますか?)
https://github.com/ocornut/imgui/issues/1987

window->DrawList->PushTextureID(g.Font->ContainerAtlas->TexID);

原因について作者さんが回答されていました。

呼び出しImGui::NewFrame()と対応するImpl_NewFrame()関数を忘れた場合は、サンプルアプリケーションコードに従ってください。

以下のような初期化処理を忘れるとそのようなエラーになるようです。

https://github.com/ocornut/imgui/blob/master/examples/example_glfw_opengl3/main.cpp#L110-L112

C++

1// Start the Dear ImGui frame 2ImGui_ImplOpenGL3_NewFrame(); 3ImGui_ImplGlfw_NewFrame(); 4ImGui::NewFrame();

投稿2021/12/12 14:24

cx20

総合スコア4648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

g.Font が nullptr だからでしょう。
gってなんですか? あなたが定義したんじゃないんですか?

投稿2021/12/12 11:12

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/12/12 11:17

いやしてません。
episteme

2021/12/12 11:20 編集

じゃ、貼り付けた画像は何なんですか?
退会済みユーザー

退会済みユーザー

2021/12/12 11:22

imgui.hのソースコードです。
episteme

2021/12/12 11:25

で、あなたは問題丸投げですか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問