0

我正在做一个项目,我想让 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()即使需要更多着色器代码,是否还有另一种方法可以做?

4

0 回答 0