重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは。
現在、OpenGLの勉強中なのですが、
どうも、次のコードでglDrawElementsが
0x0000000にアクセスしてしまいます。
シェーダーにデータが流れていっていないのでしょうか。

https://gist.github.com/anonymous/8787378

どなたか、「こうすれば動く」といったアドバイスはいただけませんか。
よろしくお願いします。

A 回答 (1件)

OpenGLの拡張機能は直接関数をさしているのではなく、関数ポインタ経由になっており、


初期化するまで各関数ポインタにはNULLが入っています。

一番簡単な初期化は、glewというライブラリを導入して、
glewInitという初期化関数を呼び出すと、glDrawElements等の関数が使えるようになります。

この回答への補足

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

補足日時:2014/02/05 07:28
    • good
    • 0
この回答へのお礼

すみません。自己解決しました。
2つのglEnableClientStateを
コメントアウトしたところ、
正常に動作しました。

GLSLで頂点及び色を設定するときは
GL_VERTEX_ARRAYやGL_COLOR_ARRAYを
Enableにしてはいけないのですね。
(glBufferDataをGL_STATIC_DRAWで
 データ有りで呼び出した場合は上記2つの
 ステートをEnableにして正常に動いていたので
 必要なのだと思っておりました。)

失礼いたしました。

お礼日時:2014/02/06 23:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!