我使用用 Golang 编写的相同 OpenGL 代码在 640x480 像素空间中绘制两条线。我很困惑,因为在 Linux 中两条线都正确绘制,但在 Windows10 中只绘制了其中一条。是什么导致了 OpenGL 行为的差异?
第 1 行:0,0 - 639,479(仅适用于 Linux)
第 2 行:50,0 - 0,50(适用于 Linux 和 Windows10)
在 Linux 上,两条线都正确绘制:
来自 Linux 的应用程序日志:
2019/08/15 02:44:12 requesting window for OpenGL 3.3
2019/08/15 02:44:12 graphicsStart(9): 640 x 480
2019/08/15 02:44:12 OpenGL version 3.3 (Core Profile) Mesa 18.2.8
2019/08/15 02:44:12 OpenGL program: 3
2019/08/15 02:44:12 pixelToClip: 0 x 0 => -1.000000 x 1.000000
2019/08/15 02:44:12 pixelToClip: 639 x 479 => 1.000000 x -1.000000
2019/08/15 02:44:12 pixelToClip: 50 x 0 => -0.843506 x 1.000000
2019/08/15 02:44:12 pixelToClip: 0 x 50 => -1.000000 x 0.791232
在Windows10上,只绘制第二行:
Windows10 的应用程序日志:
2019/08/15 18:41:19 requesting window for OpenGL 3.3
2019/08/15 18:41:19 graphicsStart(9): 640 x 480
2019/08/15 18:41:19 OpenGL version 3.3.0 - Build 21.20.16.4627
2019/08/15 18:41:19 OpenGL program: 3
2019/08/15 18:41:19 pixelToClip: 0 x 0 => -1.000000 x 1.000000
2019/08/15 18:41:19 pixelToClip: 639 x 479 => 1.000000 x -1.000000
2019/08/15 18:41:19 pixelToClip: 50 x 0 => -0.843506 x 1.000000
2019/08/15 18:41:19 pixelToClip: 0 x 50 => -1.000000 x 0.791232
这是该应用程序的完整源代码:
$ cat a.go
// # recipe for running a.go (Go 1.11 or higher)
// mkdir tmp ;# create dir for module
// cp a.go tmp ;# put app in dir
// cd tmp ;# enter dir
// go mod init tmp ;# init module
// go get -u github.com/udhos/basgo@mainthread ;# get lib from branch mainthread
// go run a.go ;# run
package main
import (
"github.com/faiface/mainthread"
"github.com/udhos/basgo/baslib"
)
func main() {
mainthread.Run(run)
}
函数 baslib.Line() 是负责绘制的主要部分,可在此处使用:
https://github.com/udhos/basgo/blob/mainthread/baslib/graphics.go#L269
米脂
相关分类