问题标签 [glsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3782 浏览

opengl - OpenGL 着色语言向后兼容性

我注意到当 GLSL 版本低于 130 时,我的 GLSL 着色器无法编译。

拥有向后兼容的着色器源最关键的元素是什么?我不想完全向后兼容,但我想了解在 GLSL 低于 130 的 GPU 上运行简单(向前兼容)着色器的主要准则。

当然这个问题可以用预处理器解决

但我可能忽略了很多问题。

0 投票
2 回答
2490 浏览

c++ - 使用 GLSL 的多个着色器加载多个纹理时出现问题

我试图在同一个场景中使用多个纹理,但无论我尝试什么,都会为每个对象加载相同的纹理。所以这就是我目前正在做的事情,我初始化每个着色器:

SendShaders 中的代码是:

然后在主循环中:

UseShader 中的代码:

void GraphicsObject::UseShader(char textureName []){

}

最后,纹理加载方法:

int GraphicsObject::LoadGLTexture(const char fileName []){

}

AUX_RGBImageRec* GraphicsObject::LoadBMP(const char fileName[], int arraySize){

}

最后初始化的着色器是用于两个对象的纹理。感谢您的宝贵时间,感谢您的任何评论。

0 投票
2 回答
2843 浏览

opengl - 在 OpenGL 顶点着色器中,gl_Position 不会被同质化

我期待 gl_Position 自动得到均质化(除以 w),但它似乎不起作用..为什么以下会产生不同的结果?

1) void main() { vec4 p; ...省略... gl_Position = projectionMatrix * p; }

2) ... 同上 ... p = projectionMatrix * p; gl_Position = p / pw;

我认为这两者应该产生相同的结果,但似乎并非如此。1 不工作,而 2 按预期工作。这可能是精度问题吗?我错过了什么吗?这让我几乎发疯了..需要帮助。提前谢谢了!

0 投票
1 回答
3863 浏览

opengl - OpenGL/GLSL 检查着色器是否在英特尔卡上编译良好

我正在使用这段代码来检查我的 glsl 着色器是否编译得很好。

在 nvidia 和 ATI 卡上返回字符串的长度为空,但在 intel 卡上返回字符串“无错误”。

如果真的没有错误,现在找出最好的方法是什么?我应该只检查这个字符串吗?或者这个函数 glGetInfoLogARB 应该返回什么约定?

0 投票
1 回答
1932 浏览

glsl - OpenGL中的填充动物

我见过 OpenGL 的金属/塑料/水/火/...着色器。

但是,可以在 OpenGL 中渲染类似毛皮的东西,比如毛绒动物/泰迪熊(我知道渲染器/光线追踪器可以做到这一点,但我想在 OpenGL 中做到这一点)。

如果您对此有指向 GLSL 着色器的指针,请指出我正确的方向。

谢谢!

[我猜答案是否定的,因为皮草需要的不仅仅是着色器——它几乎需要动态创建几何体——但我很想被证明是错误的)]

0 投票
1 回答
1642 浏览

opengl - Fragment Shader Eye-Space 未缩放的深度坐标

我正在尝试在 GLSL 片段着色器中使用与场景中对象的未缩放(从前剪裁平面的真实距离)距离。gl_FragCoord.z 值比我预期的要小。在我的顶点着色器中,我只是使用 ftransform() 来设置 gl_Position。当我预计它们在 15 到 20 之间时,我看到的值在 2 到 3 之间。

如何获得真实的眼空间深度?谢谢!

0 投票
2 回答
1031 浏览

c++ - 如何将着色器应用于特定对象

我的场景中有几个对象。我只想将我的着色器应用于其中一个。环境:OpenGL 2.0、C++、GLUT、GLEW。

0 投票
1 回答
563 浏览

ipad - Does the iPad support GLSL?

Does the iPad support GLSL?

0 投票
3 回答
2536 浏览

glsl - NPR GLSL 教程

任何人都有关于使用 GLSL 进行非照片真实感渲染的教程列表吗?我看过关于 GLSL 的书籍和 NPR 的书籍,但很少有关于使用 GLSL 进行 NPR 的书籍/教程。(我想用 GLSL 来做,因为我想要实时)。

谢谢!

0 投票
4 回答
1033 浏览

c - 如何对纹理执行 HSL 变换?

如果我有一个 OpenGL 纹理,并且我需要在渲染纹理之前对其执行 HSL 修改,据我所知,我需要一个着色器。问题是,我对着色器一无所知。有谁知道我需要看哪里?

我想编写一个函数,我可以在其中传递纹理和三个值,度数的色调偏移,以及介于 0 和 2 之间的饱和度和亮度乘数,然后让它调用一个着色器,将这些变换应用于之前的纹理呈现。界面看起来像这样:

procedure HSLTransform(texture: GLuint; hShift: integer; sMult, lMult: GLfloat);

不过,我不知道例行程序中应该包含什么。我了解 HSL/RGB 转换所涉及的基本数学,但我不知道如何编写着色器或如何应用它。有人可以指出我正确的方向吗?首选 Delphi 示例,但如果必须,我也可以阅读 C。