我正在使用 OpenGL 使用 C++ 对 Mandelbrotset 进行编程,但遇到了一个问题:我发送到着色器并在着色器中计算的浮点数只能容纳一定数量的小数位。因此,如果我放大得太远,它就会变得像素化。
我想过创建自定义数组函数,但我无法真正弄清楚。除了使用数组还有其他方法吗?如果不是,我如何使用数组来计算东西,就好像它们是单个数字一样?(例如 arr[1,2] x arr[0,2] 应该给出与仅计算 1.2 x 0.2 相同的输出)
in vec4 gl_FragCoord;
out vec4 frag_color;
uniform float zoom;
uniform float x;
uniform float y;
#define maximum_iterations 1000
int mandelbrot_iterations()
{
float real = ((gl_FragCoord.x / 1440.0f - 0.5f) * zoom + x) * 4.0f;
float imag = ((gl_FragCoord.y / 1440.0f - 0.5f) * zoom + y) * 4.0f;
int iterations = 0;
float const_real = real;
float const_imag = imag;
while (iterations < …
Run Code Online (Sandbox Code Playgroud)