这编译和工作:
diff := projected.Minus(c.Origin)
dir := diff.Normalize()
Run Code Online (Sandbox Code Playgroud)
这不会(产生标题中的错误):
dir := projected.Minus(c.Origin).Normalize()
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解为什么吗?(学习Go)
以下是这些方法:
// Minus subtracts another vector from this one
func (a *Vector3) Minus(b Vector3) Vector3 {
return Vector3{a.X - b.X, a.Y - b.Y, a.Z - b.Z}
}
// Normalize makes the vector of length 1
func (a *Vector3) Normalize() Vector3 {
d := a.Length()
return Vector3{a.X / d, a.Y / d, a.Z / d}
}
Run Code Online (Sandbox Code Playgroud) 我正在分析一个程序,其中绝大多数 (86%) 的时间都花在两个运行时函数上:kevent 和 selectgo。我理解select,但我不知道kevent是什么(所以我不知道从哪里开始优化):
Showing top 10 nodes out of 33
flat flat% sum% cum cum%
114.63s 65.79% 65.79% 114.63s 65.79% runtime.kevent /usr/local/Cellar/go/1.9.2/libexec/src/runtime/sys_darwin_amd64.s
19.26s 11.05% 76.85% 35.90s 20.60% runtime.selectgo /usr/local/Cellar/go/1.9.2/libexec/src/runtime/select.go
Run Code Online (Sandbox Code Playgroud) 如果您有一个宽度/高度的单一幂次方纹理(例如 2048),并且您希望将其缩放和平移的子集(例如缩小的 64x92 大小的图块)尽可能快地移到另一个纹理上(作为缓冲区)所以它可以在不脏时被缓存),然后将该纹理绘制到 webgl 画布上,并且您没有更多要求 - 最快的策略是什么?
它是首先加载源纹理,将空纹理绑定到帧缓冲区,将源渲染drawElementsInstancedANGLE到帧缓冲区,然后解除绑定帧缓冲区并渲染到画布?
我对 WebGL 不太了解,我正在尝试编写一个非状态版本的 https://github.com/kutuluk/js13k-2d(它只使用 draw() 调用而不是维持状态的精灵,因为我会有数百万个精灵)。在我深入杂草之前,我希望得到一些反馈。