2014-01-08 129 views
0

希望这是一个非常简单的问题。OpenGL ES 2.0 SL从片段着色器写入纹理

如何从片段着色器中写出附加到framebuffer的纹理。我认为这只是gl_FragColor,我想定义/使用不同的变量,如gl_Data [0]?

破片着色器:

 precision mediump float; 
     varying vec2 vTextureCoord; 
     uniform sampler2D displayTexture; 
     void main() { 
      gl_FragColor = texture2D(displayTexture, vTextureCoord); 
     } 

这个问题不是如何设置一个纹理写入,只是如何从片段着色器内写出来的。我只是想确保我有这个难题。

+0

是的,它应该是相同的输出。当您切换到显示缓冲区时,如果您有不同的制服/处理需求,则需要更改着色器程序。 – prabindh

回答

1

你似乎假设正确。所有的绘图代码应该是相同的绘图来渲染缓冲区,以便连接纹理,甚至着色器。

+0

用FBO附加的纹理格式会有什么奇怪的事情发生吗?就像我在EGL中将一些配置属性定义为RGBA8一样,但是没有将纹理附加到FBO的选项,只是RGBA4,自动完成转换还是这会杀死我? – HPP

+0

转换可能会杀了你。你应该可以制作RGBA8。你在哪里插入这个参数?它可能只是作为默认的RGB。另外,如果我没有记错的话,openGL将在内部始终与RGBA8一起工作,并在传输数据时缩放其他格式:RGBA4将按比例缩放x2到RGBA8,但您推送到纹理的数据必须是16位(是杀死您的部分)。 –

+0

'glTexImage2D(GLES20.GL_TEXTURE_2D,0,GLES20.GL_RGBA,\t \t \t rain.width,rain.height,0,GLES20.GL_RGBA,\t \t \t GLES20.GL_UNSIGNED_SHORT_4_4_4_4,juliaTexBuff)'据说它总是与GL_UNSIGNED_SHORT_4_4_4_4的作品,所以我不要认为这是杀死我的部分。这个问题是完整的,这个问题的答案是[这里](http://stackoverflow.com/questions/21149605/load-uniform-matrix-1104-gl-invalid-operation-android-opengles-2-0) – HPP