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

使用Opengl(GLSL)中的同一着色器在不同坐标系中绘制几何对象和纹理,opengl,glsl,opengl-es-2.0,shader,Opengl,Glsl,Opengl Es 2.0,Shader,我想知道是否有一种很好的(至少是任何)方法可以使用OpenGL2中相同的着色器程序(或者更高版本)绘制一些几何图形和纹理 在fragmnet着色器的一本书中看到了此示例(作为如何在Opengl>=2版本中替换Opegl 1中的glTexEnvi func的示例): 虽然我很难猜到顶点着色器,但如果我想在不同坐标系中绘制纹理和一些几何体(可能在某个位置相交) 有人有主意吗 一定有办法的。它只会使一些事情(例如不同的混合)变得更容易做 p.S.有一个想法,在顶点着色器中使用一个“切换器”来传递不同的

我想知道是否有一种很好的(至少是任何)方法可以使用OpenGL2中相同的着色器程序(或者更高版本)绘制一些几何图形和纹理

在fragmnet着色器的一本书中看到了此示例(作为如何在Opengl>=2版本中替换Opegl 1中的glTexEnvi func的示例):

虽然我很难猜到顶点着色器,但如果我想在不同坐标系中绘制纹理和一些几何体(可能在某个位置相交)

有人有主意吗

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


p.S.有一个想法,在顶点着色器中使用一个“切换器”来传递不同的坐标,无论它处于“1”还是“0”状态,这就是为什么它没有运行的原因。希望您知道更好的解决方案。

我就把它放在这里

虽然我仍然不知道上面这个问题可能的顶点着色器,但我很幸运地用混合的方法解决了我的子目标

事实证明,与常量GL_ONE_减去GL_DST_ALPHA,GL_DST_ALPHA的混合并没有按预期工作(当目标是顶点时),因为像素的ALPHA通道在默认情况下是“关闭”的(您仍然可以使用图像中的ALPHA通道),所以您必须“打开它”才能使与这些常量的混合正常工作。
在android studio(以及整个java)中,可以使用setEGLConfigChooser函数来实现这一点。

有点不清楚您想要什么。OpenGL 2.0及以上版本中的着色器非常灵活。你能提供一个你想要达到的效果的例子吗?试着在一个几何图元上做一个透明的孔(№1) 向后看(看另一个原语)(№2)). 孔形状通过纹理alpha通道进行调制。希望至少这个特定的目标是明确的。听起来你想要和/或
放弃
@gen-Yep,但在我看来,还有更多需要。(我不能用一张磁卡做这件事)
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;
}