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

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

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

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

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

Q&A

解決済

1回答

400閲覧

OpenGL glCreateBuffers(); でエラーが出る

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

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

0グッド

0クリップ

投稿2017/12/08 15:49

MacでxcodeでOpenGL programming guide 9th をやっているのですが
glCreateBuffers(); thread1:EXC_BAD_ACCESS(code=1,address=0x0)
と出ます
どうすればいいのでしょうか?

GLuint Buffers[NumBuffers];

glCreateBuffers( NumBuffers,Buffers);
こんな感じです

もしかしてこれをやる前にネットで拾ってきたOpenGLコードを打ち込んだからでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

ウィンドウの生成からGLコンテキストの作成、拡張ローダーの初期化と
適切な流れて初期化出来ているでしょうか?

C++

1 // OpenGLコンテキストの設定 2 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 3 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); 4 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5); 5 glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE); 6 7 // ウィンドウの生成 8 auto window = glfwCreateWindow(WINDOW_WIDTH, WIDNWO_HEIGHT, WINDOW_TITLE, nullptr, nullptr); 9 if (!window) 10 { 11 glfwTerminate(); 12 return EXIT_FAILURE; 13 } 14 // OpenGLコンテキストの作成 15 glfwMakeContextCurrent(window); 16 17 // OpenGL拡張ローダーの初期化 18 if (gl3wInit()) { 19 fprintf(stderr, "failed to initialize OpenGL\n"); 20 return -1; 21 } 22 if (!gl3wIsSupported(4, 5)) { 23 fprintf(stderr, "OpenGL 4.5 not supported\n"); 24 return -1; 25 } 26 // ここより下からOpenGLのAPIが使える

まずこれが1つ

もう1つは、
Macは持っていないのとソースコードが無い(と言うか無いと誰も答えられないと思う)ので憶測になってしまいますが、
Appleのサポート情報によるとMacでのOpenGLの実装は2017年現在の最新機種であっても4.1までに留まるようです。

OpenGL および OpenCL グラフィックスを扱う Mac コンピュータ

それに対して、glCreateBuffersを使用するのに必要なOpenGLのバージョンは4.5以上となっています。

glCreateBuffers — create buffer objects

なので対応していない機能にアクセスしようとしてEXC_BAD_ACCESSでこけているのではないかな?と

その辺はglfwSetErrorCallbackとかを使ったりしてエラーチェックをすれば、
要求したバージョンのコンテキストが作成出来なかった趣旨のメッセージが得られるのでは?と思います。

投稿2017/12/08 16:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/12/08 16:57

ありがとうございます 本のまんま打ち込んでいるので 1.については大丈夫だと思います なのでおそらく2.が原因だと思います
退会済みユーザー

退会済みユーザー

2017/12/08 17:47

本にアドレスが載っているのではと思いますが、 githubにてソースコードが全て公開されているみたいなので、 そちらで動くか確かめてはいかがでしょうか? http://www.opengl-redbook.com/ 後は基本英語ですがGL3.3(4.5とは下位互換)が対象でMacでも動作確認がされているチュートリアルがあるので参考にどうぞ gl3wとは違う拡張ローダーが使用されていますが簡単に置き換えることが出来ます。 https://learnopengl.com/ http://www.opengl-tutorial.org/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問