使用Opengl(GLSL)中的相同着色器在不同坐标中绘制几何对象和纹理

时间:2015-11-10 03:44:39

标签: opengl glsl opengl-es-2.0 shader

我想知道在opengl 2(或更高版本)中使用相同的着色器程序是否有一种很好的(至少任何一种)方法来绘制一些几何形状和纹理。

在一本关于fragmnet着色器的书中看到这个例子(作为如何在Opengl> = 2版本中替换来自Opegl 1的glTexEnvi函数的示例):

precision mediump float;
uniform sampler2D s_tex0;
varying vec2 v_texCoord;
varying vec4 v_primaryColor;
void main()
{
   gl_FragColor = texture2D(s_tex0, v_texCoord) * v_primaryColor;
}

虽然我很难猜测顶点着色器,但是我想在不同的坐标中绘制纹理和一些几何体(可能在某个地方相交)。

有人有想法吗?

必须有办法。它只会使一些事情(例如不同的混合)变得更容易。

P.S。想过使用"切换器"在顶点着色器中传递不同的坐标,它在" 1"或" 0"国家,为什么它没有锻炼。希望你知道一个更好的解决方案。

1 个答案:

答案 0 :(得分:0)

我会把它留在这里。

虽然我仍然不知道上面问题可能的顶点着色器,但我很幸运能够使用混合更难以解决我的子目标。

事实证明,与常量GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA混合并没有按预期工作(当目的地是顶点时),因为像素的alpha通道是"关闭"默认情况下(你仍然可以使用图片中的alpha通道),所以你必须打开它#34;使这些常量的混合正常工作。 在android studio(和整体java)中,可以使用setEGLConfigChooser函数来完成它。