我希望能夠(在片段着色器中)添加一個紋理到另一個。現在我有投影紋理,並希望擴大。寫入紋理GLSL
林還繪製沿着藍色/灰色測試圖像投射到是在不斷旋轉的幾何viewfrustum。
我的頂點着色器:
ProjTexCoord = ProjectorMatrix * ModelTransform * raw_pos;
我的片段着色器:
vec4 diffuse = texture(texture1, vs_st);
vec4 projTexColor = textureProj(texture2, ProjTexCoord);
vec4 shaded = diffuse; // max(intensity * diffuse, ambient); -- no shadows for now
if (ProjTexCoord[0] > 0.0 ||
ProjTexCoord[1] > 0.0 ||
ProjTexCoord[0] < ProjTexCoord[2] ||
ProjTexCoord[1] < ProjTexCoord[2]){
diffuse = shaded;
}else if(dot(n, projector_aim) < 0){
diffuse = projTexColor;
}else{
diffuse = shaded;
}
我想實現:
時 - 例如用戶按下按鈕,我想要藍色/灰色紋理爲寫入球體上的灰色紋理,並用它轉動。試想一下,將其作爲「拍攝照片」或繪畫在球體頂部,以便在按下按鈕之後藍色/灰色紋理與球體一起旋轉。
由於片段着色器在每個像素上運行,因此應該可以將像素逐像素從一個紋理複製到另一個紋理,但我不知道如何,我可能會用錯誤的東西搜索。
我怎樣才能實現這一技術?什麼方法是最通用的?建議非常感謝,請讓我知道如果更多的代碼是必要的。
是沿着你想要的東西的行幀緩衝區對象? http://www.songho.ca/opengl/gl_fbo.html – BlamKiwi 2014-11-24 22:37:38
@MorphingDragon我從來沒有使用過FBO的。那麼這個想法是FBO成爲球體的最終輸出紋理?有點像我經常修改的緩存紋理? – mike 2014-11-24 22:54:23
非常。無論如何,這只是GPU的唯一路線。 – BlamKiwi 2014-11-24 23:09:13