知道 GLSL 处于哪个像素或 UV 上?

发布于 2024-11-10 01:35:56 字数 245 浏览 1 评论 0原文

现在我可以通过以下方式获取相邻像素的颜色

color = texture2D(backBuffer, vec2(gl_TexCoord[0].x + i,gl_TexCoord[0].y + j);

但是我如何知道该像素是哪个像素或至少是纹理上该像素的当前 uv ?

片段的哪个像素。 UV / ST 是代表整个纹理的从 0 到 1 的数字。

我想根据距点的距离计算像素亮度。

Right now I can obtain the color of the neighbouring pixel by doing

color = texture2D(backBuffer, vec2(gl_TexCoord[0].x + i,gl_TexCoord[0].y + j);

But how can I know what pixel that is or at least the current uv of that pixel on the texture?

Which pixel of the fragment. The UV / ST is a number from 0 to 1 representing the whole texture.

I want to calculate a pixels brightness based on its distance from a point.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晚雾 2024-11-17 01:35:56

gl_TexCoord[0].x 为您提供 s 纹理坐标,而 gl_TexCoord[0].y 为您提供 s 纹理坐标。

如果您正在编写片段着色器,则像素位置应该不重要。我没有尝试过,但也许你可以使用 gl_in 来获取它,它的定义为:

in gl_PerVertex {
vec4 gl_Position;
float gl_PointSize;
float gl_ClipDistance[];
} gl_in[];

但我不确定它是否可用于像素着色器。

gl_TexCoord[0].x gives you the s texture coordinate, while gl_TexCoord[0].y gives you the s texture coordinate.

If you are writing fragment shader, the pixel position shouldn't matter. I haven't tried, but maybe you can get it using gl_in, which is defined as :

in gl_PerVertex {
vec4 gl_Position;
float gl_PointSize;
float gl_ClipDistance[];
} gl_in[];

but I am not sure it if it available for pixel shader.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文