我正在做一个项目,我想让 OpenGL 图形显示在 X11 窗口中。这需要在 Ubuntu 12.04 上完成,我使用的是 Mesa 的 OpenGL ES 2.0 和 egl 版本。有几个着色器被编译并且它们工作正常,但是当我到达一个时,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 和 using 是否有问题texture2D()
,或者着色器是否有其他问题?texture2D()
即使需要更多着色器代码,是否还有另一种方法可以做?