2017-10-20 132 views
1

我試圖將一個shadertoy着色器移植到SFML應用程序。shadertoy到SFML

我的問題是這一行:

float g = texture(iChannel0, uv+vec2(nh-0.07, 0.0)*nh).g; 

我認爲iChannel0是二維採樣,並在瀏覽器中運行的視頻。

我需要用其他東西替代iChannel0,但不知道如何,因爲我是全新的GLSL。

我有一個頂點着色器,看起來像這樣:

void main() 
{ 
    // Transforming The Vertex 
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; 

    // transform the texture coordinates 
    gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; 

    // forward the vertex color 
    gl_FrontColor = gl_Color; 
} 

,在我的片段着色器我有修改後的代碼包括含有iChannel0參數上面的行的其餘部分。

着色器作爲後期效果應用於整個屏幕。

我能夠轉換一切,除了最後一行。

感謝您的幫助。

+0

如果它的後期效應我懷疑你想使用你的源採樣器作爲iChannel0 –

回答

0

好了,我懂了這樣的工作:

在我的片段着色器文件的頂部,我說:

uniform sampler2D sourceTexture; 

我改變:

float g = texture(iChannel0, uv+vec2(nh-0.07, 0.0)*nh).g; 

到:

float g = texture2D(sourceTexture, uv+vec2(nh-0.07, 0.0)*nh).g; 

and in my SFML代碼:

shader->setParameter("sourceTexture", sf::Shader::CurrentTexture);