• ベストアンサー

GLSL + glDrawElementsについて

こんにちは。 現在、OpenGLの勉強中なのですが、 どうも、次のコードでglDrawElementsが 0x0000000にアクセスしてしまいます。 シェーダーにデータが流れていっていないのでしょうか。 https://gist.github.com/anonymous/8787378 どなたか、「こうすれば動く」といったアドバイスはいただけませんか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • qwertfk
  • ベストアンサー率67% (55/81)
回答No.1

OpenGLの拡張機能は直接関数をさしているのではなく、関数ポインタ経由になっており、 初期化するまで各関数ポインタにはNULLが入っています。 一番簡単な初期化は、glewというライブラリを導入して、 glewInitという初期化関数を呼び出すと、glDrawElements等の関数が使えるようになります。

umihiko29
質問者

お礼

すみません。自己解決しました。 2つのglEnableClientStateを コメントアウトしたところ、 正常に動作しました。 GLSLで頂点及び色を設定するときは GL_VERTEX_ARRAYやGL_COLOR_ARRAYを Enableにしてはいけないのですね。 (glBufferDataをGL_STATIC_DRAWで  データ有りで呼び出した場合は上記2つの  ステートをEnableにして正常に動いていたので  必要なのだと思っておりました。) 失礼いたしました。

umihiko29
質問者

補足

ご回答ありがとうございます。 ですが、 glewInitはglutCreateWindow後に呼び出してます。 (呼び出してない場合、おそらくはglGenBuffers  あたりでアクセス違反になるのではないかと)

関連するQ&A