【发布时间】:2011-06-10 22:16:24
【问题描述】:
我正在绘制一个纹理映射四边形,其纹理上有一些透明像素。所以,我加载纹理然后绘制它
gl.glEnable(GL.GL_ALPHA_TEST);
gl.glAlphaFunc(GL.GL_GREATER,0);
gl.glBindTexture(GL.GL_TEXTURE_2D, texture);
gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, width, height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, buff);
gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE);
gl.glColor4i(1,1,1,1);
gl.glBegin(GL.GL_QUADS);
// draw my quad here
gl.glEnd():
当我画这个时,透明像素没有按预期显示。但是,我想应用片段着色器。在这种情况下,我将测试一些简单的东西:
void main() {
gl_FragColor = vec4(0.0);
if ( gl_Color.a > 0.0 ) {
gl_FragColor = vec4(1.0,0,0,1.0);
}
}
在这种情况下,所有像素都应显示为红色,而不仅仅是不透明的像素。有人能解释一下如何使用着色器为不透明的像素上色吗?
谢谢, 杰夫
【问题讨论】:
标签: java opengl shader jogl texture-mapping