【发布时间】:2016-01-09 06:36:26
【问题描述】:
大家好! 我一直在尝试编写一个使用 GLSL 来渲染 Mandelbrot 集的脚本,但是发生了一些奇怪的事情。
我这样称呼效果函数:
vec4 effect( vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords){
但是,当我尝试使用 texture_coords 值时,例如:
vec2 c = vec2((texture_coords[0]-WD/2)/100, (texture_coords[1]-HT/2)/100);
它为每个像素返回相同的值;另一方面,如果我使用 screen_coords 代替,它可以工作,但我担心如果我在它周围拖动窗口可能会导致结果模糊。
为什么我无法检索纹理坐标?
对程序和问题的更多见解here
更新
我已经修改了代码,现在看起来像这样:
vec4 effect( vec4 color, Image texture, vec2 texture_coords, vec2 window_coords)
{
vec2 c = vec2( ( MinRe + window_coords[0] * ( MaxRe - MinRe ) / ( width + 1 ) ),
( MaxIm - window_coords[1] * ( MaxIm - MinIm ) / ( height + 1 ) )
);
vec2 z = c;
vec2 zn = vec2(0.0, 0.0);
int n_iter = 0;
while( (z[0]*z[0] + z[1]*z[1] < 4) && (n_iter < max_iter)) {
zn[0] = z[0]*z[0] - z[1]*z[1] + c[0];
zn[1] = 2* z[0]*z[1] + c[1];
z[0] = zn[0];
z[1] = zn[1];
n_iter++;
}
效果很好。但是当我使用 texture_coords 而不是 window_coords 时,代码会为每个像素返回相同的值,尽管我使用的纹理与窗口的大小相同。
【问题讨论】:
-
screen_coords名称不正确;实际名称是window_coords。 -
所以它检索相对于窗口的坐标,对吧?什么是 texture_coords?
-
你知道的,Love2D has a wiki.
-
维基说它实际上是相对于屏幕的坐标....
-
是的。这些人将他们命名为“screen_coords”。当然,他们认为这与屏幕有关。我的观点是,它为您提供了
texture_coords含义的定义。
标签: lua glsl love2d mandelbrot