首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给SFML的着色玩具

给SFML的着色玩具
EN

Stack Overflow用户
提问于 2017-10-20 10:38:49
回答 1查看 381关注 0票数 1

我试图移植一个着色玩具着色器到一个SFML应用程序。

我遇到的问题是这句话:

代码语言:javascript
复制
float g = texture(iChannel0, uv+vec2(nh-0.07, 0.0)*nh).g;

我认为iChannel0是一个2D采样器,是在浏览器中运行的视频。

我需要用其他的东西来代替iChannel0,但不知道怎么做,因为我对GLSL完全陌生。

我有一个顶点着色器,看起来像这样:

代码语言:javascript
复制
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参数的行。

着色器作为后置效果应用于整个屏幕。

除了最后一行之外,我还能转换所有其他内容。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-20 14:13:23

好吧,我把它做得像这样:

在我的片段着色器文件的顶部,我添加了:

代码语言:javascript
复制
uniform sampler2D sourceTexture;

我改变了:

代码语言:javascript
复制
float g = texture(iChannel0, uv+vec2(nh-0.07, 0.0)*nh).g;

至:

代码语言:javascript
复制
 float g = texture2D(sourceTexture, uv+vec2(nh-0.07, 0.0)*nh).g;

在我的SFML代码中:

代码语言:javascript
复制
shader->setParameter("sourceTexture", sf::Shader::CurrentTexture);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46847389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档