2012-01-31 10 views
1

glDrawElementsをglDrawElementInstancedに変更すると、有効なプログラムでsegfaultが発生することがわかりました。コンパイルに問題はありません。 gdbによると、glDrawElementInstancedはsegfaultsです。誰も問題を推測できますか?glDrawElementsInstancedを呼び出すときのセグメンテーションエラー

x86_64 GNU/Linuxで動作します。 CMakeLists.txtの

パート:セグメンテーション違反の

cmake_minimum_required (VERSION 2.6) 
project (sph) 

find_package(OpenGL REQUIRED) 

include_directories(
    /usr/nvidia-current 
. 
) 

set(ALL_LIBS 
    ${OPENGL_LIBRARY} 
    glfw 
    GLEW 
) 

add_definitions(
    -D_CRT_SECURE_NO_WARNINGS 
) 

target_link_libraries(sph 
    ${ALL_LIBS} 
) 

サイト:

glDrawElementsInstanced(
      GL_TRIANGLES, 
      indices.size(), 
      GL_UNSIGNED_SHORT, 
      (void *)0, 
      2 
     ); 
+0

私はこれがあなたのビルドシステムとは関係ないと思います。配列を設定して呼び出しを行うコードはもっと面白いでしょう。 – pmr

+0

pmr:ここに書き込むべきかどうかわからない。これがコードの唯一の変更です。私の理解が正しい場合、glDrawElementsInstancedの効果はglDrawElementsと同じですが、複数回実行されます。 glDrawElementsInstancedについて、配列の設定と関係がないことがありますか? – jaeyoung

答えて

3
  1. あなたが利用可能少なくとものOpenGL 3.1コンテキストを持っていることを確認していましたか?
  2. GLEW経由でglDrawElementInstancedNULLでないことを確認しましたか?
+0

それはまさに問題です。 glDrawElementInstancedがNULLです。助けてくれてありがとう!! – jaeyoung

関連する問題