如何在OpenGL中移动2D相机
我是OpenGL的新手,我在2D中制作游戏,我希望相机能够跟随角色。如何在OpenGL中移动2D相机
我开始用gluLookAt(),但我看我可以只动矩阵glTranslatef()函数,它应该做的伎俩。
的问题是,相机仅移动第一次被创建,但如果我增加了X位置和Y位置它不工作。我做错了什么?我有不正确的概念?
我试图将其更改为GL_PROJECTION,GL_MODELVIEW,和GL_TEXTURE,
如果我做它GL_PROJECTION所有项目都消失了(由于这个问题答案的链接我明白,我不能把这种方式)
如果我在GL_TEXTURE上做的所有纹理开始滚动(但这不是我想要的
如果我在GL_MODELVIEW上做,只是没有发生所有项目都在同一个站点,但如果我退出gl.glMatrixMode (GL10.GL_MODELVIEW)line translatef它移动相机的第一个迭代,然后停止做它,因为l AST对象是GL10.GL_MODELVIEW
是在不同的矩阵状态开始? 这是如何似乎随着X = 0和Y的缩写值= 0
这是如何似乎随着X的缩写值= -2和Y = -2和消除gl.glMatrixMode(GL10.GL_MODELVIEW )(如果我不elimiate这条线,这似乎是第一个即使有值-2)
在两种情况下,相机犯规举动,仅仅停留在那个位置
我的渲染代码:
@Override
public void onDrawFrame(GL10 gl)
{
loopStart = System.currentTimeMillis();
try
{
if (loopRunTime < SEngine.GAME_THREAD_FPS_SLEEP)
{
Thread.sleep(SEngine.GAME_THREAD_FPS_SLEEP - loopRunTime);
}
} catch (InterruptedException e)
{
}
deltaTime = (float) ((System.currentTimeMillis() - aRestar)/1000f);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glClearColor((78.0f/255.0f), (192.0f/255.0f), (203.0f/255.0f), 0.0f);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glTranslatef(x, y, 0f);
perro.move(gl);
moversetas(gl);
palmera.draw(gl);
comprobacionesColision();
actualizar(deltaTime);
x +=0.05f;
y +=0.05f;
loopEnd = System.currentTimeMillis();
loopRunTime = ((loopEnd - loopStart));
}
好了很多的尝试后,我成功了,我史迪威不知道这是否是实现这一目标的最佳途径,如果有人可以解释为什么这是一个解决方案,将是不错的!
我只是改变了矩阵模式GL_PROJECTION和翻译,而不是它
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0f, 8f, 0f, 4f, -1f, 1f);
gl.glTranslatef(x, y, 0f);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glTranslatef(x, y, 0f);
矩阵是棘手的工作。你有什么关于如何与一个合作的知识? 另外,0.05f的增量非常小,你尝试过更大的步骤吗?其余的代码对我来说似乎很好。 此外,你在GL_PROJECTION或GL_MODELVIEW?看看这个:https://gamedev.stackexchange.com/questions/56512/how-do-i-position-a-2d-camera-in-opengl只需看看底部的答案。
我有这么基本的知识,我试图将其更改为GL_PROJECTION,GL_MODELVIEW,和GL_TEXTURE, 的问题是不断变化的矩阵模型 感谢您的链接的结果,它是如此有用 – D4rWiNS 2014-11-24 12:52:28
更新它也通常是一个首先绘制/激活的特定顺序;其中一个关于游戏编程的棘手问题:] 另外,您的相机的旋转矩阵设置是否正确?你确定它正在看角色吗? – Zubaja 2014-11-24 13:04:35
你的意思是你的相机的旋转矩阵设置?,实际上是不看字符,只是试图移动相机(但它不动),顺序应该罚款,因为第一次迭代工作 – D4rWiNS 2014-11-24 13:11:05
我不会使用的glTranslatef类型的功能,而使用着色器 – 2014-11-24 12:49:07
只是好奇..为什么不建议你学会了opengl es 2.0吗? – FaNaT 2014-11-24 16:23:22
我没有找到任何学习openGL es 2.0的好的指南,如果你知道任何人,并可以给我一个链接,那将是太棒了! – D4rWiNS 2014-11-25 00:04:58