【发布时间】:2020-11-22 15:23:23
【问题描述】:
在强制中断期间,我决定重新访问光线追踪器,但为了有所不同,我决定通过函数式编程而不是命令式来完成。
但是我有一个问题:您如何拥有屏幕外缓冲区?
我有一个colour 类,缓冲区是colour 对象的数组,但如果colour 对象是不可变的,那么您不能简单地用新颜色更新对象。
所以我在考虑 shared_ptrs 的数组,但它正在交换到一个不可变的缓冲区。
所以我的最终方法是制作 16 个(可能更多,也可能更少)colour 对象的条带,并在它们之间建立一个链接列表,当图像完成时,然后将缓冲区复制到屏幕外缓冲区并翻转它。
这是最好的方法还是我在这里错过了一个技巧?
【问题讨论】:
-
是时候了解M-word...
-
我理解 Maybe (又名 std::optional),但我似乎无法从那个跳跃到一个大的平面缓冲区?
-
您需要了解 State,然后使用它的各种化身/兄弟姐妹之一,例如 STArray。
-
你想学习函数式编程的难点还是简单点?简单的方法是使用函数优先函数式编程语言来学习它:Learn You a Haskell for Great Good! 或The Book of F#。困难的方法是学习 C++、C#、Lisp、Scala、Rust、JavaScript 或 Swift 中的函数式编程。
-
我想在自己喜欢的环境中学习函数式编程。过去我曾涉足 Haskell 和 F#:我花更多时间试图弄清楚语言在做什么,而不是它背后的概念。
标签: c++ functional-programming buffer