【问题标题】:GO-OpenGL LoadMatrixd and GetDoublev issueGO-OpenGL LoadMatrixd 和 GetDoublev 问题
【发布时间】:2011-06-11 10:42:54
【问题描述】:
gl.MatrixMode(gl.MODELVIEW)
gl.PushMatrix()

m := new([16]float64)
setIdentity(m)

gl.LoadMatrixd((*gl.GLdouble)(&m[0]))
gl.Rotated(90, 0, 1, 0)
gl.GetDoublev(gl.MODELVIEW_MATRIX, (*gl.GLdouble)(&m[0]))
gl.PopMatrix()

fmt.Printf("%f", m[0])
// m[0] == forward.x

在GetDoublev 之后m 的内容没有改变。我正在尝试移植一些 C 代码(它可以工作,基本上就是这个)。我做错了什么?

请求的C代码:

//m is float[16] set to identity
glMatrixMode(GL_MODELVIEW);
glPushMatrix();

glLoadMatrixf(m);
glRotatef(90, 0,1,0);
glGetFloatv(GL_MODELVIEW_MATRIX, m);
glPopMatrix();

【问题讨论】:

  • 能贴出C代码吗?
  • m := new([16]float64) 是否将数组初始化为 0,还是此时未初始化?
  • 哎呀,我在调用 LoadMatrixd 之前将矩阵设置为恒等
  • @Jim Buck new() 初始化为零值,但是,我认为它在上面的代码中没有正确使用
  • 什么是setIdentity(),如果fmt.Println(m)的输出呢?

标签: opengl go


【解决方案1】:

您必须先调用 sdl.SetVideoMode() 才能使用 Matrix 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-28
    • 2011-01-21
    • 2019-04-09
    • 1970-01-01
    • 2016-01-26
    • 2011-10-30
    • 1970-01-01
    • 2011-04-25
    相关资源
    最近更新 更多