OpenGL グラフィックスを X11 ウィンドウに表示するプロジェクトに取り組んでいます。これは Ubuntu 12.04 で行う必要があり、Mesa のバージョンの OpenGL ES 2.0 と egl を使用しています。コンパイルされて正常に動作するシェーダーがいくつかありますが、1 つに到達すると、gdb はglCompile()
、このフラグメント シェーダーでセグメンテーション違反が発生していることを示しています。
const char PixmapShaderFrag[] =
"precision mediump float; \n"
"varying vec2 vTexCoord; \n"
"varying vec4 vColor; \n"
"uniform sampler2D sTexture; \n"
"void main() \n"
"{ \n"
" gl_FragColor = texture2D(sTexture, vTexCoord); \n"
"} \n";
編集:
上記のものより前にコンパイルされ、問題を引き起こさないように見える別のフラグメント シェーダーを次に示します。
const char RectShaderFrag[] =
"precision mediump float; \n"
"varying vec4 vColor; \n"
"void main() \n"
"{ \n"
" gl_FragColor = vColor; \n"
"} \n";
PixmapShaderFrag
シェーダーと他のシェーダーの唯一の大きな違いはtexture2D()
. Mesa と の使用に問題があるかどうかtexture2D()
、またはシェーダーに何か他の問題があるかどうかを知っている人はいますか? texture2D()
より多くのシェーダーコードが必要な場合でも、私ができる別の方法はありますか?`