GO-OpenGL的LoadMatrixd和GetDoublev问题

huangapple go评论83阅读模式
英文:

GO-OpenGL LoadMatrixd and GetDoublev issue

问题

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是float[16],设置为单位矩阵
glMatrixMode(GL_MODELVIEW);
glPushMatrix();

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

英文:
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

The contents of m doesn't not change after the GetDoublev. I am trying to port some C code (which works and it basically this). What am I doing wrong?

The C code as requested:

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

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

答案1

得分: 1

在使用矩阵函数之前,您必须调用sdl.SetVideoMode()。

英文:

You must call sdl.SetVideoMode() before you can use Matrix functions.

huangapple
  • 本文由 发表于 2011年1月19日 07:39:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/4730307.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定