假设我遇到了这样的问题:现在我有一个帧缓冲区,并且纹理只包含一个颜色组件(例如,GL_RED)已经绑定到它。片段着色器会是什么样子?我想答案是:
... out float ex_color;
ex_color = ...;
我的问题来了:着色器会自动检测帧缓冲区的格式并向其中写入值吗?如果片段着色器输出浮点值但帧缓冲区格式是 GL_RGBA 怎么办?
顺便说一句,创建纹理只有一个组件的正确方法是什么?我从 g-truc 中阅读了示例,其中包含如下示例:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RED,GLsizei(Texture.dimensions().x), GLsizei(Texture.dimensions().y), 0,GL_RGB, GL_UNSIGNED_BYTE, 0);
将 GL_RGB 分配为像素数据格式是什么意思?