我已经设法使用 Open Gl 和 NVidia 提供的 CGFX SDK 创建了一个简单的 mandelbrot 浏览器。它工作得很好,但目前是基于浮点的,因此没有太多的“深度”——随着从最小复数到最大复数的距离变小,精度会丢失,并且生成的图像是“像素化的”。
不幸的是,CGFX 似乎不支持双精度,即使这样,双精度也仅限于我的意图。因为 CGFX,因为它的预期设计,没有 bignum 类,我认为最好创建我自己的类。
我设法在 C++ 中创建了一个原型——它只使用无符号整数——但是当我试图将它移动到 CGFX 时,FX Composer 2.5 似乎无法编译它。因为我只使用无符号整数、乘法和加法,所以代码包含很多位移操作,根据 FX Composer 2.5,这些操作在我的配置文件中不可用。
我知道这个问题包含很多查询,但不幸的是,我对数值分析、着色器编程或 open gl 并不是很熟悉,此时我感到不知所措——而且很确定我正在尝试修复泄漏用大锤。
因此,如果有人对这些问题中的任何一个有答案,我将不胜感激:
CGFX 或任何其他着色器语言是否支持无符号整数和浮点数的位移运算符(需要将浮点数转换为大浮点数)?
CGFX 或任何其他着色器语言是否支持双精度或更高的浮点?
有没有更精致的数学方法来处理我的问题,而不是创建一个大的浮点类?
如果有人需要更多说明或代码片段,请随时提出。